An audiovisual installation that combines Processing visuals with SuperCollider sound synthesis, creating a harmonious experience through orbital motion and dynamic sound generation.
This project creates an engaging visual display of multiple dots moving in orbital patterns, each with their own revolution speed and radius. When dots cross the central axes, they trigger musical notes through OSC messages to SuperCollider, creating a synchronized audiovisual experience.
- Fullscreen orbital visualization in Processing
- Dynamic color-coded dots with unique revolution patterns
- Trail effects with fade-out animation
- Real-time OSC communication between Processing and SuperCollider
- Adaptive sine wave synthesis with reverb in SuperCollider
- Dynamic amplitude scaling based on active notes
- Visual feedback with glow effects when notes are triggered
- Harmonic frequency mapping for musical coherence
- Processing 3 or higher
- oscP5 library
- netP5 library
- SuperCollider 3.x
- Basic SuperCollider IDE
-
Install Processing from processing.org
-
Install SuperCollider from supercollider.github.io
-
In Processing, install the required libraries:
- Sketch -> Import Library -> Add Library
- Search for and install "oscP5"
-
Clone this repository:
git clone harmonic-orbits
- Open SuperCollider
- If your system runs at 48kHz sample rate, execute:
s.options.sampleRate = 48000;
- Boot the server:
s.boot;
- Run the provided SuperCollider code for the synth definition and OSC receiver
- Open the
.pde
file in Processing - Run the sketch
- The visualization will start in fullscreen mode
- Multiple dots orbit around the center point
- Each dot has a unique radius and revolution speed
- When a dot crosses the x or y axis, it sends an OSC message
- Receives OSC messages from Processing
- Maps dot indices to frequencies in a harmonic series
- Generates sine waves
- Dynamically adjusts amplitude based on active notes
- Processing Port: 12000 (incoming), 57120 (outgoing)
- Message Format:
/triggerNote [noteIndex]
- Note Index Range: 0-24
- Frequency Range: 65.41 Hz - 1760.00 Hz (harmonically mapped)
numDots
: Number of orbital dotsdotDiameter
: Size of each dottrail.size()
: Length of trailing effect
- Attack and release times in the envelope
- Reverb mix, room size, and damping
- Base amplitude and scaling factors
- Frequency mapping array
-
If no sound:
- Ensure SuperCollider server is booted
- Check that OSC ports match between Processing and SuperCollider
- Verify your system's audio output settings
-
If visual issues:
- Adjust
maxRadius
in Processing for different screen sizes - Modify
numDots
for performance optimization
- Adjust
Feel free to submit issues and enhancement requests!
- Processing Foundation
- SuperCollider community
- oscP5 library developer