Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Fast Fourier Transform (FFT) is a technique used to process data and is a major component of the spectrogram. Audio data is typically recorded in the time domain, meaning that the signal is represented as a function of time. The FFT transforms the frequency from the time domain to the frequency domain, meaning that its signal is instead represented in its frequency components instead. Putting the signal in this domain gives useful data about the signal and makes it easier to alter frequencies if needed. By using the FFT, we can calculate the magnitude and make a visual representation of the frequencies.

...

The main function takes in a .wav file, processes it, and then outputs the number of pcm PCM samples aswell as well as a message to tell the client what file the PCM data was written to. 

...

src.c: Contains the source code for the preprocessing functions used.

src.h: Contains the delcaration declaration and documentation of the preprocessing functions used.

GitHub repo:  

Give a brief overview of the file structure involved in your design, including where they are stored (ex. link to GitHub repo), as well as maybe a one-sentence description for each

Theory of Design

cornell-c2s2/spectrogram_software (github.com)

Theory of Design

In a perfect world, audio data would immediately be ready to be processed. However, many things can go wrong when capturing and recording data. There can be noise such as sudden spikes and unnecessary frequencies. This is why data must first be preprocessed. We normalize the audio to reduce the sudden spikes within the audio and use the hamming process to detect and correct errors that occur when transmitting the audio. 

After we properly preprocessed the audio, we wanted to get data from the audio. This is where the FFT comes in as it can properly transfer the PCM samples to the frequency domain and a visualization of the data can be made. From the FFT we can also calculate the magnitude of certain frequencies which could help identify birds through their calls. How did you come up with your design? What is the overall structure or design methodologies involved? This is where one might include block diagrams, FSM diagrams, or anything along those lines relevant to the design, as well as (brief) explanations for any non-obvious algorithms

...

Testing

Testing Strategy

What was your overall testing strategy? What types of testing did you perform?

...

Include step-by-step instructions on how to run the tests on your design (from a clean clone, if stored on GitHub)

...

Appendix

Resources

Include links to any resources that you used for your design, including other projects, algorithms, etc. The idea is that others who are interested in your project can explore these as well, and that they might provide helpful background knowledge

Lessons Learned

Hamming and Hanning:

https://towardsdatascience.com/brief-introduction-of-hamming-and-hanning-function-as-the-preprocessing-of-discrete-fourier-8b87fe538bb7

https://stackoverflow.com/questions/28215536/how-do-i-apply-the-hanning-function-to-my-audio-sample

https://en.wikipedia.org/wiki/Window_function (more of an introduction to what window functions are supposed to do in general) 

Widget Connector
urlhttp://youtube.com/watch?v=X8jsijhllIA

Lessons Learned

Collaboration: This project would not have been possible without the software team. With this project, we learned collaboration as a soft and technical skill. We constantly communicated with each other whenever there was an update in development and asked questions to each other for clarification. Through this, we were able to have the same vision of the project and effectively navigate through any challenges. As a technical skill, we used Github to make and merge branches during the development. This taught the team the value of source control and how it can be used effectively. 

Audio Processing: No one on the software team had any experience processing audio before. The team had to research audio processing and the techniques used. For the team to make effective algorithms, we had to understand all of the processes as we did black box testing to verify our functions. In addition, we needed to understand the process to properly document functions for future clients and maintainers.To be filled out as you go!  What are some of the lessons you learned while completing your project? They can be technical or soft skills (such as time management, collaboration, etc.)