readme_demo.rb
One beat mapping expands concentric rings.
vizcore start examples/readme_demo.rb --audio-source file
Ruby DSL / Audio Analysis / Browser Renderer
Ruby DSL for audio-reactive VJ visuals.
Vizcore connects scene definitions, FFT analysis, beat detection, MIDI control, and WebSocket streaming into one Ruby-first workflow for live visuals.
Signal Chain
Analyze microphones, WAV, MP3, FLAC, dummy sources, and MIDI events, then stream amplitude, frequency bands, BPM, beats, and scene data into the browser renderer.
Scene DSL
Define layers, shaders, transitions, and audio mappings with a Ruby DSL. Connect peaks, low-end pressure, high-frequency motion, and beat counts directly to visual parameters.
Vizcore.define do
scene :drop do
layer :bg do
shader :kaleidoscope
effect :glitch
map frequency_band(:low) => :rotation_speed
map frequency_band(:high) => :effect_intensity
end
layer :storm do
type :particle_field
count 9000
blend :add
map amplitude => :speed
map beat? => :flash
end
layer :scope do
type :waveform
source :audio
style :ribbon
map amplitude, to: :height
end
layer :waterfall do
type :spectrogram
scroll :vertical
map amplitude, to: :gain
end
layer :rings do
circle count: 8 do
radius 100
map bass, to: :radius
end
end
layer :footage do
type :video
file "assets/loop.mp4"
map beat? => :invert
end
end
end
Show Files
Start with a wireframe cube, beat-synced drops, file playback, MIDI switching, and custom GLSL scenes built for pre-show testing.
One beat mapping expands concentric rings.
vizcore start examples/readme_demo.rb --audio-source file
A beat-counted transition from intro into drop.
vizcore start examples/intro_drop.rb
Layered rings, grid, particles, wireframe, and glitch energy.
vizcore start examples/complex_audio_showcase.rb --audio-source file
Install
Install PortAudio and ffmpeg on macOS, or libportaudio and ffmpeg on Linux, then add the gem. fftw3 is optional and speeds up FFT analysis when it is available.
gem install vizcore
vizcore start examples/basic.rb
# macOS
brew install portaudio ffmpeg
brew install fftw
# Ubuntu / Debian
sudo apt install -y libportaudio2 libportaudio-dev ffmpeg
sudo apt install -y libfftw3-dev