[ bradley_henke ]
  • Films
  • Reel
  • Resume
  • Contact
✕
Published by bradley.henke on March 17, 2019
Categories
  • Software
  • DateMarch 17, 2019

OpenGL Audio Visualizer

 
 
 

Software

Written in C with OpenGL
GLSL Shaders
Sound data analyzed with fmod library

 
 

Description

Sound Waves
waveform

The first display shows the sound wave. The amplitude of the wave represents the power of the wave at that exact moment in time. You can think of it as the volume of the wave. When the waves are really close together, the tone is high pitched. When the waves are farther apart, the tone is lower. We can get a broad idea about the nature of sound by viewing it's waveform, but with a little further analysis we can understand even more.


Frequency Spectrum
frequencyspectrum

The previous section described a sound wave in terms of how the wave changed during a short period of time. You can also think of a sound wave as being composed of an infinite number of other waves, each vibrating at a different frequency. If you graph those frequencies you get a frequency spectrum. You'll notice that at this moment in the music most of the sounds is made up of lower frequencies. That is because this is a linear frequency spectrum, meaning from left to right on the diagram the frequencies increase at a constant rate. However, that's not how our ears understand sound. Our ears hear sound logarithmically, which means a frequency has to be doubled each time we increase an octave. For example, on the piano, A3 is 220 Hz, A4 is 440 Hz, and A5 is 880 Hz (if it were linear we would expect A5 to be 660 Hz). So, we can transform the data again to understand even more information.


8 Band Logarithmic Frequency Spectrum
bandspectrum

In this diagram, I transformed the data so that it fits in a logarithmic scale. The frequencies have been grouped into 8 equal groups. So, when there is a really low note in the music the left most bands will be appear really high. When there are high pitched notes, the right most bands will be really high. This is cool, because if we were to track the movement of these bands we could discover when impulses, or beats, occur in the low, high, and mid-tone notes!


Audio Visualizer
sphere

It's interesting to see this data expressed in terms of graphs, but I thought it would be cool to make a more interactive display. The above object contains several spheres which are essentially copies of each other. The spheres have 8 segments, each of which corresponds to a band in the previous graph. The segments expand based on the power of each of the bands. The shader colors the pixels purple when they are zero, and they get increasingly yellow as they move away from the origin.

 
Share

Related posts

March 17, 2019

Kinect Random Dot Autostereograms


Read more
March 17, 2019

STEM Arduino Game


Read more
March 17, 2019

Maya Sound Scape Plugin


Read more
March 17, 2019

Digital Identity Facebook App


Read more