A colorful FFT programm demonstrating acoustic data decomposition. For profit and fun.

Overview

FFT power spectrum visualizer

A high-quality demonstration of the application can be found at

This program utilized discrete Fourier transformation to obtain the time-frequency-domain of a audio file. The result can be explained as following:

  • The top part of the program, we can see the raw time-amplitude data as it can be found in any WAV file. While this is the intuitive way for how we think of data, it is not very informative.
  • The bottom part of the program is the output of the algorithm, combined with some waterfall effect. This parts display the heart of DFT or Fourier Transformation in general, which allows us to decompose the data into their frequencies and how much each frequency contributes to the final sound. This kind of data has many nice attributes to which allow us to deploy many other tools from signal processing, machine learning and pattern recognition to wrangle data in a more effective way.

This program is on the other hand just a nice artistic demonstration of the algorithm, notice how much better we can see which piano key is being pressed, which is almost impossible to achieve with time-amplitude.

Build and run it yourself (C++11 / SFML 2.5)

Install the dependencies

sudo apt-get install libsfml-dev

Clone the repository

git clone https://github.com/longmakesstuff/FFT-Power-Spectrum.git --depth 1

Compile

cd FFT-Power-Spectrum
mkdir build
cd build
cmake ..
make -j8

And play any WAV song you want with

./bin/main [song-path.wav]

References

You might also like...
🔗 Common Data Structures and Algorithms

🔗 Data Structures and Algorithms This library provides common data structures. It will also provide some data structures which needed in render or ga

A collecton of generic reference counted data structures, tools to create compatible C style classes, and demo applications

The Offbrand library is a collection of reference counted generic data structures written in C for C. The library includes bash scripts to assist in t

Data Structure and Algorithms problems across various platforms.
Data Structure and Algorithms problems across various platforms.

Covering various practice problems of Arrays, Stacks, queue, tree, graph and different Algorithms. A collection of solutions for Data Structure and Algorithms problems across various platforms in different languages.

Interpolating and plotting empirical data with polynomial approximation
Interpolating and plotting empirical data with polynomial approximation

Graph creator I needed a way to plot empirical data in my programs. A nth order polynomial as an interpolating function works for this purpose fine en

An assortment of commonly used algorithms and data structures implemented with C++.

Algorithms-And-Data-Structures This repo contains C++ implementations of common algorithms and data structures, grouped by topics. The list will be sp

The ultimate guide for data structure and algorithms

Quick Notes: For Arrays: (methods that can be applied) sorting and then doing something, hashtable, two pointers in a loop are some of the operations

Wonderful library with lots of useful functions, algorithms and data structures in C, link it with -l9wada

Lib9wada Wonderful library with lots of useful functions, algorithms and data structures in C, link it with -l9wada Usage Compile the library with mak

Wonderful library with lots of useful functions, algorithms and data structures in C, link it with -l9wada

LibC+ Wonderful library with lots of useful functions, algorithms and data structures in C, link it with -lC+ Better than C, not as much as c++ Usage

A collection of basic data structures syntaxes, useful for competitive coding and placement exams
A collection of basic data structures syntaxes, useful for competitive coding and placement exams

Data-Structures A collection of basic data structures syntaxes, useful for competitive coding and placement exams 1. Array 2. Matrix 3. Linked List Si

Owner
Long Nguyen
Studying CS at Uni Tübingen, Germany
Long Nguyen
Tuplex is a parallel big data processing framework that runs data science pipelines written in Python at the speed of compiled code

Tuplex is a parallel big data processing framework that runs data science pipelines written in Python at the speed of compiled code. Tuplex has similar Python APIs to Apache Spark or Dask, but rather than invoking the Python interpreter, Tuplex generates optimized LLVM bytecode for the given pipeline and input data set.

Tuplex 791 Jan 4, 2023
Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as task graphs that are scheduled concurrently and asynchronously on both CPUs and GPUs.

Directed Acyclic Graph Execution Engine (DAGEE) is a C++ library that enables programmers to express computation and data movement, as tasks in a graph structure, where edges represent task dependencies

null 28 Dec 18, 2022
Is a linear data structure with O(log n) searches and O(cbrt n) insertions and index lookups.

A binary cube is a linear data structure that contains a sorted two dimensional dynamic array of nodes which each point to a sorted array

null 22 Jul 13, 2022
Repository of problems and solutions of labsheets used for Data Structures and Algorithms (CS F211) in Semester 2, 2020-21 at BITS Pilani - Hyderabad Campus.

CS F211 Data Structures and Algorithms (BITS Pilani - Hyderabad Campus) This repository contains the problems, solution approaches & explanations and

Rohit Dwivedula 27 Oct 31, 2022
Algo-Tree is a collection of Algorithms and data structures which are fundamentals to efficient code and good software design

Algo-Tree is a collection of Algorithms and data structures which are fundamentals to efficient code and good software design. Creating and designing excellent algorithms is required for being an exemplary programmer. It contains solutions in various languages such as C++, Python and Java.

DSC-Banasthali 53 Oct 4, 2022
Templates, algorithms and data structures implemented and collected for programming contests.

Templates, algorithms and data structures implemented and collected for programming contests.

Shahjalal Shohag 2k Jan 2, 2023
Analysing and implementation of lossless data compression techniques like Huffman encoding and LZW was conducted along with JPEG lossy compression technique based on discrete cosine transform (DCT) for Image compression.

PROJECT FILE COMPRESSION ALGORITHMS - Huffman compression LZW compression DCT Aim of the project - Implement above mentioned compression algorithms an

null 1 Dec 14, 2021
Easy to use, header only, macro generated, generic and type-safe Data Structures in C

C Macro Collections Easy to use, header only, macro generated, generic and type-safe Data Structures in C. Table of Contents Installation Contributing

Leonardo Vencovsky 347 Jan 8, 2023