<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Yanj&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Yanj&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Yanj"/>
		<updated>2013-05-25T01:02:53Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22alpha</generator>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T20:50:32Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* User Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
===Greg===&lt;br /&gt;
Your part of the wiki is very complete. Nicely documented. Cleaver workaround to get the plots running quickly enough. &lt;br /&gt;
Good Job.I'm able to do the '''git pull''' and run everything as described. The only problem is the waveforms that are displayed don't seem to correlate with the input sound.  I whistle and expect to see some sort of sine wave, but I don't. Your code could use some more documentation. Did you create it all on your own, or did you find examples elsewhere?  Your comments should say.&lt;br /&gt;
&lt;br /&gt;
Overall very good, but lacking some functionality. &lt;br /&gt;
&lt;br /&gt;
 Wiki:     100&lt;br /&gt;
 Project:  85&lt;br /&gt;
 '''Total:'''    92.5&lt;br /&gt;
&lt;br /&gt;
===Mona===&lt;br /&gt;
Your wiki description could have more details. What do the different options of your program do?  How do I quit?  I don't hear anything coming out.  How do I switch to the PS EYE microphones?&lt;br /&gt;
&lt;br /&gt;
 Wiki:     90&lt;br /&gt;
 Project:  80&lt;br /&gt;
 '''Total:'''    85&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&lt;br /&gt;
 user@host:~/ECE497-DisplayAudioWaveforms$ '''sudo apt-get install gnuplot'''   (took 33 seconds)&lt;br /&gt;
&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
As to the AudioEffects part, it reads audio data using alsascr. Input some sound source to the aux-in, and connect the aux-out with earphones or speaker with left and right channels. &lt;br /&gt;
&lt;br /&gt;
When you run the AudioEffects, several options will pop out:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Input different choice, it give sound after low-pass and bandpass filters. You can also hear the echo with reverberation and an invert effects. In addition, the variables of filters can be modified in the AudioEffects.c file, according to customized effects.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
GStreamer Pipeline&lt;br /&gt;
&lt;br /&gt;
It reads audio data using alsascr. After applies sound effect, it outputs the audio using alsasink. &lt;br /&gt;
The Gstreamer elements we used for our audio effects include audioconvert, audiocheblimit, audiochebband, audioecho, audioinvert, etc.&lt;br /&gt;
For detailed information please refer to [http://gstreamer.freedesktop.org/ GStreamer].&lt;br /&gt;
&lt;br /&gt;
[[File:File-PIC2.png]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg Mona&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Investigating open source media framework- Mona &lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T20:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* User Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
===Greg===&lt;br /&gt;
Your part of the wiki is very complete. Nicely documented. Cleaver workaround to get the plots running quickly enough. &lt;br /&gt;
Good Job.I'm able to do the '''git pull''' and run everything as described. The only problem is the waveforms that are displayed don't seem to correlate with the input sound.  I whistle and expect to see some sort of sine wave, but I don't. Your code could use some more documentation. Did you create it all on your own, or did you find examples elsewhere?  Your comments should say.&lt;br /&gt;
&lt;br /&gt;
Overall very good, but lacking some functionality. &lt;br /&gt;
&lt;br /&gt;
 Wiki:     100&lt;br /&gt;
 Project:  85&lt;br /&gt;
 '''Total:'''    92.5&lt;br /&gt;
&lt;br /&gt;
===Mona===&lt;br /&gt;
Your wiki description could have more details. What do the different options of your program do?  How do I quit?  I don't hear anything coming out.  How do I switch to the PS EYE microphones?&lt;br /&gt;
&lt;br /&gt;
 Wiki:     90&lt;br /&gt;
 Project:  80&lt;br /&gt;
 '''Total:'''    85&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&lt;br /&gt;
 user@host:~/ECE497-DisplayAudioWaveforms$ '''sudo apt-get install gnuplot'''   (took 33 seconds)&lt;br /&gt;
&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
As to the AudioEffects part, it reads audio data using alsascr. Input some sound source to the aux-in, and connect the aux-out with earphones or speaker with left and right channels. &lt;br /&gt;
&lt;br /&gt;
When you run the AudioEffects, several options will pop out:&lt;br /&gt;
&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&lt;br /&gt;
Input different choice, it give sound after low-pass and bandpass filters. You can also hear the echo with reverberation and an invert effects. In addition, the variables of filters can be modified in the AudioEffects.c file, according to customized effects.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
GStreamer Pipeline&lt;br /&gt;
&lt;br /&gt;
It reads audio data using alsascr. After applies sound effect, it outputs the audio using alsasink. &lt;br /&gt;
The Gstreamer elements we used for our audio effects include audioconvert, audiocheblimit, audiochebband, audioecho, audioinvert, etc.&lt;br /&gt;
For detailed information please refer to [http://gstreamer.freedesktop.org/ GStreamer].&lt;br /&gt;
&lt;br /&gt;
[[File:File-PIC2.png]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg Mona&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Investigating open source media framework- Mona &lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T20:40:40Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Theory of Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Grading ==&lt;br /&gt;
===Greg===&lt;br /&gt;
Your part of the wiki is very complete. Nicely documented. Cleaver workaround to get the plots running quickly enough. &lt;br /&gt;
Good Job.I'm able to do the '''git pull''' and run everything as described. The only problem is the waveforms that are displayed don't seem to correlate with the input sound.  I whistle and expect to see some sort of sine wave, but I don't. Your code could use some more documentation. Did you create it all on your own, or did you find examples elsewhere?  Your comments should say.&lt;br /&gt;
&lt;br /&gt;
Overall very good, but lacking some functionality. &lt;br /&gt;
&lt;br /&gt;
 Wiki:     100&lt;br /&gt;
 Project:  85&lt;br /&gt;
 '''Total:'''    92.5&lt;br /&gt;
&lt;br /&gt;
===Mona===&lt;br /&gt;
Your wiki description could have more details. What do the different options of your program do?  How do I quit?  I don't hear anything coming out.  How do I switch to the PS EYE microphones?&lt;br /&gt;
&lt;br /&gt;
 Wiki:     90&lt;br /&gt;
 Project:  80&lt;br /&gt;
 '''Total:'''    85&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&lt;br /&gt;
 user@host:~/ECE497-DisplayAudioWaveforms$ '''sudo apt-get install gnuplot'''   (took 33 seconds)&lt;br /&gt;
&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
GStreamer Pipeline&lt;br /&gt;
&lt;br /&gt;
It reads audio data using alsascr. After applies sound effect, it outputs the audio using alsasink. &lt;br /&gt;
The Gstreamer elements we used for our audio effects include audioconvert, audiocheblimit, audiochebband, audioecho, audioinvert, etc.&lt;br /&gt;
For detailed information please refer to [http://gstreamer.freedesktop.org/ GStreamer].&lt;br /&gt;
&lt;br /&gt;
[[File:File-PIC2.png]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg Mona&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Investigating open source media framework- Mona &lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T05:33:38Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Theory of Operation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
GStreamer Pipeline&lt;br /&gt;
&lt;br /&gt;
It reads audio data using alsascr. After applies sound effect, it outputs the audio using alsasink. &lt;br /&gt;
[[File:File-PIC2.png]]&lt;br /&gt;
&lt;br /&gt;
The Gstreamer elements we used for our audio effects include audioconvert, audiocheblimit, audiochebband, audioecho, audioinvert, etc.&lt;br /&gt;
For detailed information please refer to [http://gstreamer.freedesktop.org/ GStreamer].&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg Mona&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Investigating open source media framework- Mona &lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:File-PIC2.png</id>
		<title>File:File-PIC2.png</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:File-PIC2.png"/>
				<updated>2012-02-24T05:22:42Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: kj&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;kj&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:File-_PIC1.png</id>
		<title>File:File- PIC1.png</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:File-_PIC1.png"/>
				<updated>2012-02-24T05:18:24Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;test&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T05:00:27Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg Mona&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Investigating open source media framework- Mona &lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T04:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Conclusions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect, then user can choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T04:57:37Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Conclusions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
We are able to capture channel1 and channel2 audio signal from PS Eye microphone and display audio waveform plot on a host computer with the data being sent from the beagle via netcat. We also able to implement four different audio effects using Gstreamer. But this project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would be nice if we can add GUI to audio effect to let user to choose the effect and set properties of each effects. It would definitely have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T04:47:30Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Installation Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For the audio effect, compile AudioEffect.c to read in audio from in input jack.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) AudioEffect.c -o AudioEffect&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run AudioEffect.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# ./AudioEffect&lt;br /&gt;
usage: please input &amp;lt;choice&amp;gt; (choice from 0 to 4)&lt;br /&gt;
0--original&lt;br /&gt;
1--lowpass&lt;br /&gt;
2--bandpass&lt;br /&gt;
3--audioecho-reverb&lt;br /&gt;
4--audioinvert&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would definately have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-24T04:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat. If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
We've investigated the audio effect through open source community and we choose Gstreamer. We explored GStreamer core module, the gst-plugins-base module, the gst-plugins-good module, the gst-plugins-ugly module, and the gst-plugins-bad module offered by the 0.10 GStreamer stable release series. We successfully implemented lowpass, bandpass filter, echo, reverberation and invert effects. In addition, we further explored other audio effects that Gstreamer capable of, such as removing human voice from background music. &lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Currently our project can take audio data from a Playstation Eye microphone array running on the Beagle Board and then plot it on a host computer. We found this method to be the fastest and smoothest way to implement the plotting of the audio signals with the limited C++ programming experience and time we had. The script running on the host can take information about the plots including the range, number of channels, number of windows, and the number of samples displayed. A demo of what our project can do can be found [http://youtu.be/YGzpW3jSiHo here].&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Our program works by running the AudioThru program we made work in Lab08 to generate the audio data. This audio data is then sent through a netcat connection with the host computer. This audio data is then plotted using GnuPlot with the given preferences for the plots supplied by the user. Scripts were created to simplify this entire process. The plots can be generated by only running one script on the beagle and one script on the host computer making the plotting easier for the user. The simple overview of our program can be summed up in the following diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:Diagram.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot harder than first anticipated. Much time was spent trying to get a Qt application to run on the beagle and use Qwt to plot the audio data with not a lot of success. It would definately have been better if we had C++ experience and a familiarity with Qt. It would be very beneficial if time was not a factor to learn how to use Qt because it can provide some powerful applications especially on embedded devices. Though we couldn't get this project to work using Qt and to run soley on the beagle, we did want to have something to show for our project which is the current implementation. Getting a program to run only using the beagle, adding a GUI to enhance the user experience with our program, and having the ability to send video and audio back to a host computer are all enhancements that would be greaat to implement if time permitted.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T06:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
In addition, lowpass and bandpass filters have been successfully implemented with Gstreamer. We are working on adding sound effects like flanging, reverberation and the &amp;quot;Wah-Wah&amp;quot;, a classic guitar effect. We will also continue to explore Gstreamer to fit our needs. &lt;br /&gt;
If time permits, it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T06:03:12Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Currently lowpass and bandpass filters have been implemented using Gstreamer. And We plan to add other effects like flanging, reverberation. We will also continue to explore Gstreamer to fit our needs. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T05:40:25Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Currently lowpass and bandpass filters have been implemented on the host using Gstreamer. But we have some Gstreamer compile problem at beagleboard. We will fix these problems and plan to add other effects like flager. We will also continue to explore Gstreamer to fit our needs. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T05:39:29Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Work Breakdown */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Currently lowpass and bandpass filters have been implemented on the host using Gstreamer. But we have some Gstreamer compile problem at beagleboard. We will fix these problems and plan to add other effects like flager. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
Audio effect using Gstreamer- Mona&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project:_PS_EYE_QT</id>
		<title>ECE497 Project: PS EYE QT</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project:_PS_EYE_QT"/>
				<updated>2012-02-13T05:38:03Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Executive Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Team members: [[user:Yanj|Mona Yan]], [[user:Harrisgw| Greg Harrison]]&lt;br /&gt;
&lt;br /&gt;
== Executive Summary ==&lt;br /&gt;
&lt;br /&gt;
For our Final Project we wanted to be able to capture audio from the PlayStation Eye microphone array and then be able to display the audio waveforms all on the beagle.&lt;br /&gt;
Initially we set out to display the waveforms in Qt using Qwt, which was later proved to be more difficult than initiall anticipated due to limitations on the Beagle and neither of us having prior C++ programming experience.&lt;br /&gt;
The next thought was to try to use GnuPlot to try to plot the audio data. GnuPlot was really designed to produce static plots of information, not plots that were in realtime. We were able however to find different ways to &amp;quot;force&amp;quot; GnuPlot to plot the live data with the help of a clever script written by [http://users.softlab.ntua.gr/~ttsiod/index.html Thanassis Tsiodras], and then also edited by [http://www.lysium.de/blog/index.php?/archives/234-Plotting-data-with-gnuplot-in-real-time.html Andreas Bernauer] which can be found [http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html here].&lt;br /&gt;
When we implemented this script with our audio data on the beagle it still wasn't as realtime as we would have liked it to be due to the capabilities of the beagle, so we then had the idea to send the data back to a host computer which would then have the processing capability to produce the results we were after.&lt;br /&gt;
&lt;br /&gt;
We currently have working plots of audio waveforms for channel1 and channel2 of the PS Eye microphone array. These plots are displayed on a host computer with the data being sent from the beagle via netcat.&lt;br /&gt;
&lt;br /&gt;
Currently lowpass and bandpass filters have been implemented on the host using Gstreamer. But we have some Gstreamer compile problem at beagleboard. We will fix these problems and plan to add other effects like flager. If time permits it would be interesting to see if what we could also get netcat to do such as transferring video and/or audio from the beagle to the host.&lt;br /&gt;
&lt;br /&gt;
This project turned out to be a lot more difficult then initially anticipated. Although it would be nice for this project to run solely on the beagle it is very interesting to discover all of the possibilities of utilizing netcat between the beagle and host.&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions ==&lt;br /&gt;
* This is the [https://github.com/ github] path to our project: https://github.com/harrisgw/ECE497-DisplayAudioWaveforms . &lt;br /&gt;
 &lt;br /&gt;
Every package needed on the beagle should already be there with the current image we are working with.&lt;br /&gt;
Start by cloning the git directory on the host computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ git clone git@github.com:harrisgw/ECE497-DisplayAudioWaveforms.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then go into this directory and view all the files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$cd ECE497-DisplayAudioWaveforms&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ls&lt;br /&gt;
Beagle  driveGnuPlotStreams.pl  Host.sh  README&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The folder Beagle now needs to be copied to the beagle. In this example 10.0.0.13 is the IP address of the beagle replace with your beagles IP address:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ scp -r Beagle/ root@10.0.0.13:.&lt;br /&gt;
root@10.0.0.13's password: &lt;br /&gt;
audio_input_output.h                            100%  521     0.5KB/s   00:00    &lt;br /&gt;
Makefile                                        100% 6923     6.8KB/s   00:00    &lt;br /&gt;
Beagle.sh                                       100%   56     0.1KB/s   00:00    &lt;br /&gt;
audio_input_output.c                            100%   12KB  11.7KB/s   00:00    &lt;br /&gt;
debug.h                                         100%  741     0.7KB/s   00:00    &lt;br /&gt;
audio_thread.h                                  100%  447     0.4KB/s   00:00    &lt;br /&gt;
audio_process.c                                 100%  879     0.9KB/s   00:00    &lt;br /&gt;
audio_process.h                                 100%   98     0.1KB/s   00:00    &lt;br /&gt;
app_DEBUG.Beagle                                100%   23KB  23.4KB/s   00:00    &lt;br /&gt;
main.c                                          100% 1806     1.8KB/s   00:00    &lt;br /&gt;
audio_thread.c                                  100% 9553     9.3KB/s   00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The Beagle folder should now be on your beagleboard. Check and then enter that folder:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~# ls&lt;br /&gt;
Beagle	 a.out	   busybox	driveGnuPlotStreams.pl	exercises  sinuses.pl&lt;br /&gt;
Desktop  autogain  byobu-4.25	esc-gst			network&lt;br /&gt;
Old	 bin	   c6run_build	esc-media		qt&lt;br /&gt;
root@beagleboard:~# cd Beagle&lt;br /&gt;
root@beagleboard:~/Beagle# ls&lt;br /&gt;
Beagle.sh	  audio_input_output.c	audio_process.h  debug.h&lt;br /&gt;
Makefile	  audio_input_output.h	audio_thread.c	 main.c&lt;br /&gt;
app_DEBUG.Beagle  audio_process.c	audio_thread.h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now that that is all set up we need to get the gnuplot package on the host. This should be all you need to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ sudo apt-get install gnuplot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now everything should be ready &lt;br /&gt;
&lt;br /&gt;
* Note: The PS Eye should be attached to the Beagle board and both the host computer and beagle should be on the same Internet network&lt;br /&gt;
&lt;br /&gt;
== User Instructions ==&lt;br /&gt;
After setting up everything on the host and Beagle, its time to see if everything works.&lt;br /&gt;
First run the Beagle.sh script on the Beagle board:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@beagleboard:~/Beagle# ./Beagle.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then on the host run the Host.sh script, which will ask a series of questions:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~/ECE497-DisplayAudioWaveforms$ ./Host.sh &lt;br /&gt;
How many streams (enter:1 or 2)?&lt;br /&gt;
2&lt;br /&gt;
Would you like those streams in 1 window or 2 windows? (enter:1 or 2)&lt;br /&gt;
2&lt;br /&gt;
How many samples per window?&lt;br /&gt;
100&lt;br /&gt;
Enter Minimum Y axis:&lt;br /&gt;
-10000&lt;br /&gt;
Enter Maximum Y axis:&lt;br /&gt;
10000&lt;br /&gt;
Enter window width:&lt;br /&gt;
500&lt;br /&gt;
Enter window height:&lt;br /&gt;
500&lt;br /&gt;
Enter IP address of Beagle:&lt;br /&gt;
10.0.0.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If everything worked you should now see 2 plots of audio that are from the Beagle board being displayed on the host computer.&lt;br /&gt;
To quit the plots just push ctrl-c in the terminal window of either the beagle or the host.&lt;br /&gt;
&lt;br /&gt;
== Highlights ==&lt;br /&gt;
&lt;br /&gt;
Here is where you brag about what your project can do.&lt;br /&gt;
&lt;br /&gt;
Consider including a [http://www.youtube.com/ YouTube] demo.&lt;br /&gt;
&lt;br /&gt;
== Theory of Operation ==&lt;br /&gt;
&lt;br /&gt;
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.&lt;br /&gt;
&lt;br /&gt;
== Work Breakdown ==&lt;br /&gt;
&lt;br /&gt;
Initial work with Qt-Greg&lt;br /&gt;
&lt;br /&gt;
Plotting with gnuplot-Greg&lt;br /&gt;
&lt;br /&gt;
Sending data back to host for faster plotting with netcat- Greg&lt;br /&gt;
&lt;br /&gt;
Making scripts to somewhat automate the plotting- Greg&lt;br /&gt;
&lt;br /&gt;
== Conclusions ==&lt;br /&gt;
&lt;br /&gt;
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Project_Ideas</id>
		<title>ECE497 Project Ideas</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Project_Ideas"/>
				<updated>2011-12-08T15:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: /* Mini Project Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
[[Category:BeagleBoard]]&lt;br /&gt;
&lt;br /&gt;
We have both mini projects and projects in ECE497.  &lt;br /&gt;
&lt;br /&gt;
'''Mini projects''' involved finding something interested in the Beagle world and installing it to your beagle and demoing it to the class.  You would also create a wiki page documenting what you did to get it installed.  Often you may find multiple efforts do to something, for example there are a few efforts to port Android on the Beagle.  Your task is to figure out which one should be used.  Generally mini projects won't require you to write new code; however they are the background work that may lead to a full project.  You should do a couple mini projects for the class.  Generally they are done alone, but working in pairs is OK. These will be about 1/3 of your grade and should be done in the first 5 weeks or so.&lt;br /&gt;
&lt;br /&gt;
Only one '''full project''' is done for the class and it's done with a team of 3 or 4.  These projects can take a mini project (or a whole new idea) and add to it.  The goal is to have your work contribute to the open source world. Any code is generated will be kept on [https://github.com/ github] and a [http://bitbake.berlios.de/manual/ bitbake receipt] will be created to automatically download and create the object files.&lt;br /&gt;
&lt;br /&gt;
What follows are&lt;br /&gt;
&lt;br /&gt;
; Places to look for project ideas: Feel free to add your own suggestions.&lt;br /&gt;
; Mini Project ideas: Add your own suggestions, and do some of them.  Mark the ones you've done.&lt;br /&gt;
; Full Project ideas: ditto.&lt;br /&gt;
&lt;br /&gt;
== Sources for Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
Here are some links where you'll find ideas for your project.&lt;br /&gt;
* [http://wiki.omap.com/index.php/ETechDays_Community_Lightning_Talks ETechDays Community Lightning Talks], this is a one-day web-based conference where many project ideas are presented.  One of our 2009-2010 senior design projects was found here.&lt;br /&gt;
* [http://beagleboard.org/project Official list of Beagle Projects], there are many Beagle specific projects listed here.  Many are inactive.  ''List your project here once it running.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=Mk1xjbA-ISE Augmented Reality Project], here's an idea that I think we can do on the Beagle.  Rather than using augmented reality glasses, I'd suggest we use a [http://focus.ti.com/dlpdmd/docs/dlpdiscovery.tsp?sectionId=60&amp;amp;tabId=2235 TI DLP pico projector]. [http://www.hitlabnz.org/wiki/EmbeddedAR Here's] AR running on the Beagle. &lt;br /&gt;
* [http://code.google.com/p/0xdroid/ Android], this is one of a couple of efforts to port [http://source.android.com/ Google's Android OS] to the Beagle.&lt;br /&gt;
* [[BeagleBoard/Ideas-2009]] Google summer code ideas 2009.&lt;br /&gt;
&lt;br /&gt;
== Mini Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Suggestor&lt;br /&gt;
! Implementor&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| Work up an example of controlling the PWM registers from the shell.&lt;br /&gt;
| [http://esdw.wordpress.com/2010/03/25/a-useful-tool-devmem2/ PWM via the shell]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Weather Station&lt;br /&gt;
| [http://dominion.thruhere.net/koen/cms/using-the-beaglebone-as-a-weatherstation Ultrasonic weather]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Mike Yuhas&lt;br /&gt;
| Interface the BeagleBoard with an SRF08 Ultrasonic Ranger over I2C&lt;br /&gt;
| [http://yetanotherhackersblog.wordpress.com/2011/04/07/interfacing-the-beagleboard-with-an-srf08-ultrasonic-ranger-over-i2c Ultrasonic Ranger]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Compile the PowerVR examples&lt;br /&gt;
| [http://www.imgtec.com/powervr/insider/sdkdownloads/index.asp PowerVR Insider SDK Downloads]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Work up some GStreamer PS EYE Demos&lt;br /&gt;
| [http://www.electronsonradio.com/2011/06/playstation-eye-gstreamer-examples GStreamer PS EYE Demos] and [http://www.ridgerun.com/blog/?p=224 RidgeRun]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Douglas Selby&lt;br /&gt;
| Get TI' embedded speech recognizer installed and demo the examples.&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Demo last year's TI speech project.  I have a microphone amplifier and mike you can use.&lt;br /&gt;
| [[ECE597 Project pyWikiReader]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Find who is doing what with Kinect on the Beagle and install and run it.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+kinect&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQga2lu&amp;amp;qesig=9qrD0rFfjWfujRRGmkB_Bw&amp;amp;pkc=AFgZ2tn-cylx0f71PasgBKOazjBQY3VK712RWQ7DueEjQNAdbOHr6BCgUd9xdyXyPe8TWErkesrQ246vygwImnAS5mIzCG2-5g&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;source=hp&amp;amp;aq=0&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+kin&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard kinect]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Greg Harrison&lt;br /&gt;
| I have several [http://en.wikipedia.org/wiki/PlayStation_Eye Sony PlayStation Eye web cams] and I have examples of how to pull video from them via V4L2 ([[ECE497 DaVinci Workshop Labs]]).  The Eye also has a 4 microphone array.  I don't know how to get audio from it.  Figure out how.  This may expand to a full project if there is no solution out there.&lt;br /&gt;
| [http://www.google.com/webhp?rlz=1C1GPCK_enUS392US392&amp;amp;sourceid=chrome-instant&amp;amp;ie=UTF-8&amp;amp;ion=1#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=beagleboard+playstation+eye+microphone+array&amp;amp;cp=0&amp;amp;qe=YmVhZ2xlYm9hcmQgcGxheXN0YXRpb24gZXllIG1pY3JvcGhvbmUgYXJyYXk&amp;amp;qesig=Sdh5Ru_jodwYydoeTls1GA&amp;amp;pkc=AFgZ2tmwB41tQwF7XwrJPqFnf0NRO911bMCrbnU1HR9Vm6-Pg0sH8LvbJZsKwjKRUpoin4cZlwLIngZw8OC7dyanjcJCG4N_kg&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;rlz=1C1GPCK_enUS392US392&amp;amp;site=webhp&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=beagleboard+playstation+eye+microphone+array&amp;amp;pbx=1&amp;amp;bav=on.2,or.&amp;amp;fp=3e817b7ec5d13467&amp;amp;ion=1 Google - beagleboard playstation eye microphone array]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find some examples of how to use '''cmem'''. CMEM is an API and library for managing one or more blocks of physically contiguous memory. It also provides address translation services (e.g. virtual to physical translation) and user-mode cache management APIs. It's used for managing the shared memory between the ARM and the DSP on the processor.  I've been unable to find examples of how to use it.&lt;br /&gt;
| [http://processors.wiki.ti.com/index.php/CMEM_Overview CMEM Overview]&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| &lt;br /&gt;
| Connect to your beagleboard using ethernet over USB. This allows your beagleboard to share the host computer's internet connection and allow you to connect via VNC/ssh without the need for an external router/switch. This should make development much easier. &lt;br /&gt;
| [[BeagleBoardBeginners#Connect_with_your_beagleboard_using_VNC_and_ethernet_over_USB | VNC]]&lt;br /&gt;
|-&lt;br /&gt;
| Brian Hulette&lt;br /&gt;
| &lt;br /&gt;
| Experiment with audio synthesis and/or sampling/processing.  You could either synthesize and play a few tones to generate a song, or have the Beagle sample an audio signal then process and output it to create a sort of effects pedal. &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| David McGinnis&lt;br /&gt;
| Look into connecting the beagleboard to a phone or headphones using bluetooth. This could involve either outputting audio and taking in audio from a bluetooth headset, allowing you to have audio I/O with the beagleboard, or could involve connecting with phones automatically as they come into range of the beagleboard, allowing for an automatic attendence registration system, among other things.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Get a video stream from a PS Eye, and identify the relevant device files.&lt;br /&gt;
| [http://en.wikipedia.org/wiki/PlayStation_Eye#cite_note-Linux_support-32 PlayStation_Eye#cite_note-Linux_support-32]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| William Gerth&lt;br /&gt;
| William Gerth&lt;br /&gt;
| Explore the possibility of implementing OpenAOS on the Beagle, to make a portable media player and etc.&lt;br /&gt;
| http://www.openaos.org/&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
|&lt;br /&gt;
| Lacking a serial port and don't have a USB-serial converter?  Why not find a way to make the BeagleBoard boot over a USB console connection?&lt;br /&gt;
| [http://itgen.blogspot.com/2011/03/beagleboard-xm-u-boot-without-serial.html BeagleBoard XM U-boot without Serial]&lt;br /&gt;
|-&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Joel Carlson&lt;br /&gt;
| Depending on what one is working on, it might be useful to mount the BeagleBoard root filesystem over NFS.  The link to the right does that using a USB-Ethernet connection, but one that just runs over an Ethernet cable would be nice.&lt;br /&gt;
| [http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB Mount BeagleBoard Root Filesystem over NFS via USB]&lt;br /&gt;
Here's an example of mounting dfs/afs on the Beagle&lt;br /&gt;
&lt;br /&gt;
[[ECE497 Mounting dfs/afs in Linux]]&lt;br /&gt;
|-&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Lei Liu&lt;br /&gt;
| Build communication with FPGA via USB port.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Play around with the BeagleBoard's various SPI and I2C ports, and get it to talk to some simple SPI and I2C peripherals, such as a 7-Segment display driver or small LCD panel&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Jay Dial&lt;br /&gt;
| Look into the parallel computing possibilities of the BeagleBoard. See how difficult it would be to get two BeagleBoards to communicate properly for parallel computing.&lt;br /&gt;
| [http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html How to make a BeagleBoard Elastic R Beowulf Cluster]&lt;br /&gt;
|-&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Randy Billingsley&lt;br /&gt;
| Configure wlan on the beagle board using a wireless usb adapter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Mike Fuson&lt;br /&gt;
| Get XBMC working on the beagle.&lt;br /&gt;
| [http://elinux.org/BeagleBoard/GSoC/2010_Projects/XBMC XBMC wiki page]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Sam Allen&lt;br /&gt;
|&lt;br /&gt;
| Port Android to beagle&lt;br /&gt;
| It's done.  Check out [http://code.google.com/p/rowboat/ this].&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| Change the splash screen to a Rose logo when the Beagle starts up&lt;br /&gt;
| [http://blog.bizmobiletech.com/?p=253&amp;amp;utm_source=feedburner&amp;amp;utm_medium=twitter&amp;amp;utm_campaign=Feed%3A+BeagleBoard+%28BeagleBoard.org%29 How to Change Angstrom Boot logo in beagleboard]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Ziyi Zhang&lt;br /&gt;
| Do remote debugging with Eclipse.  My page needs updating.&lt;br /&gt;
| [[ECE497 Installing the Eclipse IDE]]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
|&lt;br /&gt;
| Investigate Eigen. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. Explicit vectorization is performed for SSE 2/3/4, ARM NEON, and AltiVec instruction sets, with graceful fallback to non-vectorized code. This means it should run fast on the Beagle.  How fast does it run?  Has anyone used it on the Beagle?&lt;br /&gt;
| [http://eigen.tuxfamily.org/index.php?title=Main_Page eigen.tuxfamily.org]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Find what libraries are available for the DSP side of the DM 3730 and write some examples that use them.&lt;br /&gt;
| [http://focus.ti.com/docs/toolsw/folders/print/sprc265.html C64x+ DSP Library (DSPLIB)] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc092.html DSPLIB] &lt;br /&gt;
[http://focus.ti.com/docs/toolsw/folders/print/sprc094.html IMGLIB]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Convert the OSS labs to use the new ALSA drivers&lt;br /&gt;
| [http://www.alsa-project.org/main/index.php/Tutorials_and_Presentations ALSA Tutorials]&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| &lt;br /&gt;
| Dig into the DSS drivers.  The OMAP display subsystem supports rotation and mirroring, but the '''mirror''' and '''rotate''' files in '''/sys/devices/platform/omapdss/display''' ''X'' don't work.  Find the code that implements them see if you can figure out what's wrong.&lt;br /&gt;
| [http://elinux.org/BeagleBoardFAQ#.22DSS2.22_display_driver_for_.3E.3D_2.6.29 dss2]&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install an RT kernel on beagleboard. If successful, this could turn into a full project for exploring RT system and application.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Interface beagleboard with a GPS device to read location information. If successful, see if it's possible build a (small) app that downloads appropriate map from google map and shows the beagleboard's location.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Jack Ma&lt;br /&gt;
| &lt;br /&gt;
| Install a VPN server on beagleboard.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Guanqun Wang&lt;br /&gt;
| &lt;br /&gt;
| Run beagle board with a small LCD display&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Yifei Li&lt;br /&gt;
| &lt;br /&gt;
| Demo a BeagleLight program that could synchronize LEDs with music.&lt;br /&gt;
| http://processors.wiki.ti.com/index.php/BeagleLight&lt;br /&gt;
|-&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Mona Yan&lt;br /&gt;
| Display BeagleBoard orientation by using accelerometer and opengl.&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Full Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Winter 2011-2012 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://e2e.ti.com/blogs_/b/dlp_mems_blog/archive/2011/05/13/3d-structured-light-using-dlp-technology.aspx 3D Structured Light using DLP® Technology]&lt;br /&gt;
| Create 3D maps using a DLP pico and the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://m.matrixsynth.com/2011/06/beagleboard-synth-proof-of-concept.htm Beagle Midi]&lt;br /&gt;
| Make the Beagle synthesize midi files.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [http://www.sakoman.com/OMAP/an-overiew-of-omap3-power-management-with-2639-pm.html Beagle Power Management]&lt;br /&gt;
| Work up some power management demos.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
Edit this page to add projects you would like to do.  If you aren't in the class, add ideas you would like to see done by class members.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| [https://gforge.ti.com/gf/project/tiesr TI Embedded Speech Recognizer]&lt;br /&gt;
| Port TI's fixed-point speech recognizer to the DSP.  It currently runs on the ARM.&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Kinect&lt;br /&gt;
| [http://hackaday.com/2010/11/15/rendering-a-3d-environment-from-kinect-video/ Here] and [http://gamerfront.net/2010/12/with-a-second-kinect-you-can-map-out-your-bedroom-in-3d/4644 here] are some interesting things people are doing with Kinects.  Maybe we could port it to the Beagle.&lt;br /&gt;
|-&lt;br /&gt;
| Mike Lester&lt;br /&gt;
| Accelerometer-based auto-leveled projection&lt;br /&gt;
| Several projects have been started to add [http://matthsu-abacus.blogspot.com/2009/11/build-3-axis-accelerometer-on.html  accelerometer support] to the BeagleBoard. This project would involve getting an accelerometer installed and working, perhaps using a [http://elinux.org/BeagleBoard_Trainer trainer board], as well the [http://focus.ti.com/general/docs/gencontent.tsp?contentId=52770 TI Pico Projector]. The orientation data from the accelerometer would be used to rotate, skew, keystone the projected image in order to keep it level and normalized.&lt;br /&gt;
|-&lt;br /&gt;
| Aaron Bamberger&lt;br /&gt;
| Kinect Based 3d Scanner&lt;br /&gt;
| Build some sort of motorized gantry that allows the Kinect to be rotated around (and possibly from top to bottom) of an arbitrary object.  The motors would be controlled using the BeagleBoard's I2C or SPI interfaces.  Use libfreenect to capture depth information from every side of the object as the Kinect rotates around the object.  Use this data and OpenGL to build a 3d model of the scanned object&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| Port winDSK6 to the Beagle&lt;br /&gt;
| [http://www.ece.wisc.edu/~morrow/software/ winDSK6] is a Windows program that talks to a TI 'C6711 DSK and performs many interesting audio effects.  This project would implement the code running on the Windows side on the ARM.  The ARM could capture a frame of audio and send it to the DSP for processing.  The ARM could then send the processed audio to the speakers.  [http://processors.wiki.ti.com/index.php/C6Run c6run] would be used to interact with the DSP.  &lt;br /&gt;
|-&lt;br /&gt;
| David Bliss&lt;br /&gt;
| Automated Die Tester&lt;br /&gt;
| Make a device that can roll a die, and keep statistics on how random the die is. The build can either be very complex, or very simple, depending on how you define &amp;quot;rolling a die&amp;quot;. The software doesn't necessarily have to know what the numbers mean, it just has to be able to uniquely identify the sides.&lt;br /&gt;
|-&lt;br /&gt;
| Stephen Mayhew&lt;br /&gt;
| Set-Playing System&lt;br /&gt;
| Set is a relatively simple card game that lends itself nicely to image recognition and computer play. The layout is not very structured, and the game play is pretty simple. This project would incorporate image recognition, projection of possible moves (using the pico projector), and maybe even speech synthesis, and recognition. For example, if someone didn't know how to play Set, then the board could take them through a tutorial, asking questions of the user as it went along (&amp;quot;If I have these 2 cards, what 3rd card would make a set?&amp;quot;). This would make for an interesting demo at conferences. &lt;br /&gt;
|-&lt;br /&gt;
| Michael Fuson  &lt;br /&gt;
Jay Dial&lt;br /&gt;
| Spectrum Analyzer&lt;br /&gt;
|Create a real-time audio Spectrum analyzer on the BeagleBoard. [http://elinux.org/ECE497_Project_Spectrum_Analyzer Project Page]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Team&amp;amp;nbsp;Members&lt;br /&gt;
! Project Title&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| [[ECE597 Project pyWikiReader | pyWikiReader]]&lt;br /&gt;
| This project is mostly software, with the hardware element being the use of the dsp. The idea is to tie together three technologies: speech recognition, speech synthesis, and internet access in order to create an interface capable of orating information to the user based on a vocal command. The implementation I have in mind is to use the Pocket Sphinx speech recognition engine to first understand what the user wants through speech, such as &amp;quot;Rose-Hulman&amp;quot;. Once the speech is translated, the software can execute a Wikipedia search to pull said item's page. Most of the important info is contained within the introductory paragraph, so the software will take only that chunk and feed it into the Flite speech synthesis engine. The end result is a simple machine with &amp;quot;mother box&amp;quot; like usability, that is, no interaction besides what is natural to the user (speaking) should be necessary to retrieve the information.&lt;br /&gt;
|-&lt;br /&gt;
| Paul Morrison &amp;lt;br&amp;gt; Steven Stark&lt;br /&gt;
| [[ECE597 3D Chess | 3D Chess with Networking]]&lt;br /&gt;
| This project would simulate a hand-held chess game, and the game would allow two player games using two beagleboards over a network connection.  The graphics would use the beagle's PowerVR SGX for hardware accelerated graphics by using OpenGL.  In addition to 3D graphics and networking, a third portion of the project would be to optimize the boot time because a chess computer should start up quickly.&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most &amp;lt;br&amp;gt; David Baty &amp;lt;br&amp;gt; Mark Jacobson&lt;br /&gt;
| [[ECE597: Sumo Robot|Sumo Robot]]&lt;br /&gt;
| The goal of this project is to create a robot capable of competing in the 3.0 kg weight class of a sumo competition ([http://www.youtube.com/watch?v=V3OR_sHrOJM an example]).  This would have minor hardware and electronics elements, but would focus on communication with sensors using the BeagleBoard and the Linux kernel.  At minimum, this involves sensors to detect the edge of the ring and the opposing robot.  This would likely be implemented using Sharp IR rangefinders, a ultrasonic rangefinders, and ideally a camera.  [http://circ.mtco.com/competitions/2010/rules/sumo Sumo rules].&lt;br /&gt;
|-&lt;br /&gt;
|Brian Embry &amp;lt;br&amp;gt; Jessica Lipscomb &amp;lt;br&amp;gt; Paul Banister&lt;br /&gt;
| [[ECE597 Network based MP3 player]]&lt;br /&gt;
| Network based mp3 player.  The Beagle will be programmed using a custom, protocol for transferring files from a network based server (x86 pc) to a Beagle.  Speakers will be attached to the Beagle, where the file will be played back.  Possible extensions are a LCD for displaying id3 tag information, and buttons for user interaction (next track, previous track, etc.) on the GPIO interface.&lt;br /&gt;
|-&lt;br /&gt;
|[[user:routhcr | Chris Routh]] &amp;lt;br&amp;gt; [[user:collinjc | J. Cody Collins]] &amp;lt;br&amp;gt; [[user:jacksogc | Greg Jackson]] [[user:Xinkeqiong | Keqiong Xin]]&lt;br /&gt;
| [[ECE597: Auto HUD]]&lt;br /&gt;
| Use the beagle board to run image recognition on a camera feed located inside a car, and then signaling to the driver via a pico projector various objects of interest.&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&amp;lt;br&amp;gt;Qiang Jiang&lt;br /&gt;
| [[ECE597_Adding_Sense_to_Beagle|Adding Sense to Beagle]] (See [[BeagleBoard/GSoC/Ideas]])&lt;br /&gt;
| Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, Gyroscopes, Temperature Sensors, Humidity Sensors, Pressure Sensors, etc, would be added to beagle to compliment the microphone input in order to allow sensing of the real world environment. Then SW APIs would need to be layered on top to allow easy access to the sensory data for use by applications. &lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin &amp;lt;br&amp;gt; Matt Luke &amp;lt;br&amp;gt; Elliot Simon &amp;lt;br&amp;gt; Jian Li&lt;br /&gt;
| [[ECE597 Interactive Pong|Interactive Pong]]&lt;br /&gt;
| Run classic pong, projecting the screen and using a camera to track user's hands for input.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-28T01:50:20Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yanj | Mona J Yan]]&lt;br /&gt;
| 27-Nov-2011&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-28T01:45:36Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yanj | Mona J Yan]]&lt;br /&gt;
| 27-Nov-2011&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Contributions_and_Project_Status</id>
		<title>ECE497 Contributions and Project Status</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Contributions_and_Project_Status"/>
				<updated>2011-11-28T01:44:34Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Please edit this page and add your user name, alphabetically by last name, to this list.&lt;br /&gt;
&lt;br /&gt;
Take a look at what you and others have contributed.&lt;br /&gt;
&lt;br /&gt;
# [[Special:Contributions/YourUserName| YourName]]&lt;br /&gt;
# [[Special:Contributions/Yoder | Mark A. Yoder]]&lt;br /&gt;
# [[Special:Contributions/Yuming | Yuming Cao]]&lt;br /&gt;
# [[Special:Contributions/Yifei | Yifei Li]]&lt;br /&gt;
# [[Special:Contributions/Harrisgw | Greg Harrison]]&lt;br /&gt;
# [[Special:Contributions/Yuhasmj | Michael Yuhas]]&lt;br /&gt;
# [[Special:Contributions/Yanj | Mona Yan]]&lt;br /&gt;
# [[Special:Contributions/Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
# [[Special:Contributions/Zitnikdj | David Zitnik]]&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Yanj</id>
		<title>User:Yanj</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Yanj"/>
				<updated>2011-11-28T01:40:57Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: Created page with &amp;quot;Master of ECE&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Master of ECE&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-28T01:39:47Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yanj | Mona J Yan]]&lt;br /&gt;
| 28-Nov-2011&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-28T01:39:24Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yanj | Mona J Yan]]&lt;br /&gt;
| 28-Nov-2011&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2011-11-28T01:38:05Z</updated>
		
		<summary type="html">&lt;p&gt;Yanj: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ECE497]]&lt;br /&gt;
&lt;br /&gt;
Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|Master of ECE&lt;br /&gt;
! Mona J Yan&lt;br /&gt;
! 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuming | Yuming Cao]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yuhasmj | Michael Yuhas]]&lt;br /&gt;
| 21-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yifei | Yifei Li]]&lt;br /&gt;
| 22-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Ziyi Zhang | Ziyi Zhang]]&lt;br /&gt;
| 24-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Zitnikdj | David Zitnik]]&lt;br /&gt;
| 25-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Harrisgw | Greg Harrison]]&lt;br /&gt;
| 26-Nov-2011&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Yanj</name></author>	</entry>

	</feed>