Processing Audio Visualization (PAV) is a music visualization project based on Processing and Java.
The project consists of three parts:

PAV can be downloaded from github. It is released under the GPL v3 license.

Using PAV

If you want to run PAV, first download the project from github. Then, navigate to /pav, open a terminal and enter ant run-sw or ant run-gl (you must have Ant installed on your system for this to work). run-gl will start PAV in OpenGL mode, utilizing the GLGraphics library. This mode offers high quality and speed but might cause problems on some systems. run-sw uses a software renderer. This should work on all systems, but quality and performance are much lower and some visualizations do not work with this mode. Further configuration can be done by editing the build file. When you start the application a black window appears. In order to see something you first have to add a Visualizer.

In PAV audio data is visualized by so called Visualizers. A visualization can consist of many independent Visualizers. In order to add a Visualizer to the stack, type add x and hit enter, where x is the name of a Visualizer. PAV currently supports 8 Visualizers (see Visualizers). You can add, configure, and remove these Visualizers at runtime by typing in the PAV window. All available commands are listed at the commands page.

PAV receives data to visualize over the network. This abstracts from the way how music is accessed: Any program that implements the communication protocol of PAV can stream data to it. The project comes with a simple music player with PAV support. In order to start the player, navigate to /pav-player, open a terminal and enter ant. The player will start and try to connect to PAV. If PAV is not running at startup, you will see an error. The player will work anyway, but you have to restart it if you want it to stream data to PAV. If the player was able to connect to PAV, it will stream music data to PAV as it is played and you should see a visualization of it in the PAV window.

PAV running with the Bubbles Visualizer

PAV Player playing and streaming music to PAV

Using the code

libpav provides a framework that allows you to access audio data, transformations of that data, as well as common audio descriptors, and makes it easy to create new Visualizers. Please refer to the code documentation for information on how to use the API. If you find bugs or want to contribute to the project, please contact me on github.