DEV Community

Exil_S
Exil_S

Posted on

I've Built My Own OpenGL Visualizer App for Dj's and VJ's

Besides programming, I also DJ in a few VRChat clubs, and there was always one question I kept running into:

How can I make my stream actually look good?

Having music is one thing, but especially when streaming a DJ set, I wanted visuals that actually reacted to what I was playing instead of just having a static screen in the background.

I started looking around for existing solutions and eventually found Resolume. It could do a lot of what I wanted, but there were two major problems for me: it is paid software, and more importantly, it doesn't run natively on Linux.

Around the same time, I was getting deeper into OpenGL and shader programming, so eventually I had the thought:

"Hey, why don't I just make my own?"

The First Attempt

That idea eventually turned into my first visualizer project.

The original version used a custom, Python-like shader language and was my first serious attempt at building an application around programmable visuals.

It worked as a concept, but the project quickly started running into problems, especially with the UI and the overall architecture. Eventually, development slowed down and I moved on to other projects.

But the idea never really went away.

After gaining more experience and improving my graphics programming skills, I eventually came back to it.

This time, I wanted to do it properly.

May I Present: AVis

AVis is an open-source, audio-reactive shader visualizer built around GLSL and OpenGL.

The idea behind it is simple:

Play music. Open AVis. Get visuals.

AVis listens to the audio that is already playing on your system and analyzes it in real time. Your visuals can then react to different parts of that audio, allowing you to create everything from subtle animated backgrounds to full audio-reactive scenes.

There is no need to manually route your DJ software into the visualizer or set up a complicated virtual audio device first.

Visuals Are Packs

One of the most important parts of AVis is its pack system.

Instead of hardcoding visuals into the application, every visual is its own pack containing GLSL shaders and a small configuration file.

That means AVis isn't limited to the visuals that come with it.

You can create your own.

If you already know GLSL, you don't have to learn an entirely new visual scripting system just to make something interesting. Write your shader, save it, and AVis can reload it while it is running.

This also means visuals can easily be shared between users.

Make a pack, export it, send it to someone else, and they can import it into their own installation.

Why I Made It

AVis originally started because I needed it myself.

I wanted something I could put on another monitor while DJing, switch to fullscreen, select a visual, and simply let it react to my set.

But I also wanted something that other people could actually build on.

You don't have to be a VRChat DJ to use it.

AVis can be used for:

  • DJ streams and live sets
  • VRChat club events
  • Livestream backgrounds
  • Music visualizations
  • Shader experimentation
  • Creating and testing audio-reactive GLSL shaders
  • Visuals for secondary displays or projectors

And because the visuals aren't locked inside the application itself, AVis can continue growing through new packs without the entire program needing to change.

Open Source and Cross-Platform

Another important goal was making AVis something I could actually use on my own system.

AVis currently supports Linux and Windows, with native audio backends for both platforms.

The entire project is also open source under the AGPL-3.0 license.

So whether you just want a visualizer for your next DJ set, want to experiment with audio-reactive shaders, or want to contribute to the project itself, you can.

This project started with me asking:

"How do I make my stream look better?"

Some questionable early code, a failed first attempt, and a lot more OpenGL experience later, that question became an actual application.

That application is AVis.

Check it out

https://gitlab.com/avis-group/AVis

Feedback, contributions, shader packs, bug reports, and absolutely cursed GLSL experiments are all welcome.

Top comments (0)