Project focuses on the audio analysis using cpp. It analyzes the .wav audio files and use fast fourier transformation to distinguish the strongest frequencies from the unused ones.
# Initialize build directory
cmake -S . -B build
# Build and run project
cmake --build build --target main && ./build/main
# Build and run tests
cmake --build build --target tests && ./build/tests
# Build and run benchmarks
cmake --build build --target benchmarks && ./build/benchmarks
# Record your own .wav file (MacOS)
ffmpeg -f avfoundation -thread_queue_size 1024 -i ":1" -ac 1 -ar 44100 -acodec pcm_s16le ./data/eval/input_file.wav
# Build and run documentation
doxygen && open docs/html/index.html
# Set up pre-commit local git hook.
chmod +x .githooks/pre-commit
git config core.hooksPath .githooksProgram to work properly needs the instalation of following dependencies:
Project includes the documentation .md files, each
describing other essential aspect of the project, from
the researcher perspective.
- Audio Analysis Techniques:
./docs/AUDIO_ANALYSIS.md. - Audio Files Specification:
./docs/AUDIO_FILES.md. - Fourier Transform Summarise:
./docs/FFT.md.
After bulding and running the project, based on the input_file.wav
in ./data/eval directory, program will generate several files including
one that is composed of half the sampled frequencies plus one and is called
./data/eval/output_file.wav.
Every other file consisting of the number of
the x most valued frequencies are called: ./data/eval/spectrums/spectrum_to_x.wav.
Application shows various charts representing input and generated data strength over time graph, as well as graph of strength of each frequency, obtained via usage of DFT.




