||Displays help message
||Sets the size of the FFT window
||Sets the number of sample overlap for sequential FFT windows
||Sets the window function for the FFT, can be "rectangle" or "hanning" currently
||Compresses the display of the FFT. Sets a hard cieling on spectral energy at this value times the max energy at any bin in the frequency-time domain. Other values are linearly scaled towards this cieling.
||Changes the amount of frequency bins to display to this value times the number of FFT output bins. Useful for creating better visualizations in a linear scale. Will be less useful once logarithmic frequency axis functionality is implemented.
||Path to the GLSL file to use as the vertex shader
||Path to the GLSL file to use as the fragment shader
||Path to the audio file to play/visualize (currently must be a WAV file)
Summary of Accomplishments
Used OpenGL and other technologies to create a synchronized, scrolling 3D spectrogram to visualize an audio file. Created command line interface to change various visualization options. Learned loads about scientific computing using OpenGL, knowledge that will be extremely useful for my research efforts in the future.
Known Issues and Future Work
When the texture representing the spectral energy is scrolling, the spectral history (which should be static) seems to jump around and vary. I am not entirely sure what is causing this, but I am looking into it and it will be fixed in a later release. Additionally, I am looking in to support for logarithmic frequency axis and different input audio formats. Eventually I would like this software to be able to visualize FFT data of real-time audio input for use as a plug-in for digitial audio workstations. Finally, this software is currently only tested on Linux.
Used TechSmith Jing to capture a short, (low FPS) video of my spectrogram visualizer playing the Aphex Twin track Pulsewidth.
Links and References
Source Code (github)
JUCE Home Page
OpenGL Scientific Programming Tutorial