You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Overview

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. 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.


Background

System Requirements

What are the requirements for your system? What functionality must it have? Are there any design space/size requirements? Use the table down below to efficiently document these:

Requirement DesignatorRequirement Explanation


Interface

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


Implementation

Timeline

Include a timeline of tasks and/or milestones for your project (with dates). This should be decided at the beginning, and reviewed throughout the semester to evaluate whether the project is on schedule or not. This can take the form of either a Gantt chart or a Confluence task list (click the "+" button, and select "Task List")

Files

The whole process is stored within three files: main.c, src.c, and src.h. 

main.c: Contains the main function which takes in a .WAV file, preprocesses it,and applies the FFT to the PCM samples. 

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

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

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

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?

Running Tests

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

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.)

  • No labels