Skip to content
A JUCE Module containing OpenGL accelerated realtime (audio) data visualization Components
Branch: master
Clone or download
JanosGit SharedOpenGLContext: Now inherits juce::DeletedAtShutdown
No more need for calling SharedOpenGLContext::deleteInstance() before app shutdown
Latest commit 058f9cc Jul 16, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/StandaloneOscilloscopeSpectralAnalyzer SharedOpenGLContext: Now inherits juce::DeletedAtShutdown Jul 16, 2019
img First commit Oct 17, 2018
ntlab_opengl_realtime_visualization SharedOpenGLContext: Now inherits juce::DeletedAtShutdown Jul 16, 2019
.gitignore First commit Oct 17, 2018
LICENSE Updated Readme for new SharedOpenGLContext Mar 15, 2019


This is a side-product from current work on my Master Thesis I'd like to share with you.

Basic idea

This repo should contain some classes helping to implement Open GL accelerated JUCE Components that visualize measurements of realtime signals. Motivated through the target application of my Master Thesis special focus was set on the possibility of connecting the GUI Components and the realtime data collection mechanism in different ways, e.g. both running in one application, both running in seperate processes on the same machine or even both running on different Hardware devices connected via Network. Because of this my design always needs a data sink and a data source which are connected over some abstract channel and to which all data collection classes as well as all visualization Components are connected.

For applications with more than one GL-accelerated visualization Component, a shared OpenGL Context class manages to render multiple Components without expensive Context switching.

Furthermore all visualization Components are designed to (re)store their state through a JUCE ValueTree.

To use it, just add it to your personal modules folder and add it to your Project from within the Projucer. Note that the JUCE OpenGL module is not specified as a dependency to this project because the module is also designed for scenarios where the sender is a GUI-less process maybe even running on an embedded processor without any GUI ressources. However adding the juce_opengl module to your project will enable all GUI-related parts of this module.

Currently implemented parts

GUI Components

  • Oscilloscope
  • Spectral Analyzer


  • Local sink and source allowing to let both the data collection and visualization take place in the same process

Next steps

  • A Network-Based Connection
  • Extending the data collector interfaces to complex valued sample buffers for project internal use
  • A 3D surface plot to visualize matrix-based calculations

Example Project

An example JUCE project of how to set up an oscilloscope and spectral analyser for analyzing two incomming audio channels in a simple JUCE Audio App template based project can be found under


Have fun playing around with it and try out to customize the look!

You can’t perform that action at this time.