Five Worlds, One Engine
These are Orpheus's own fragment shaders, translated from Qt to WebGL and running right here — same maths, same 32 bands, same spectrum history. Cycle through them.
The pace buttons change the tempo the world travels at. LIVE AUDIO hands the shader your microphone, so it reacts to whatever you are actually playing.
How It Works
Nine pieces, one sentence each.
A Python service that owns the TIDAL session, the queue and the position — so the interface can be restarted without stopping the music.
Signs in and resolves streams, at the best quality the account allows.
Does the decoding, driven over a JSON socket, with its own media controls switched off so it never fights for the desktop's attention.
Turns the output into 32 bands, 30 times a second — 60 when the fullscreen stage is open.
The engine: computes spectral flux, finds the beat, and keeps every surface fed from one place.
Autocorrelates six seconds of that flux once a second to work out the tempo.
Distance, integrated on the CPU — so a tempo change bends the motion instead of teleporting the world.
A 32×40 texture holding the last second of spectrum, so Prism and Horizon can build terrain out of the past without the CPU ever seeing it.
Packs bands, peaks, beat, flow and the live theme colours into one uniform block and hands it to the shader.
Where It Actually Lives
Everything above runs in a browser. This is the same engine in its real home.
The visualizer sits in the right-hand rail of the player, sized in columns and rows of the desktop font rather than pixels. Every colour is a theme token read live from the shell, so switching themes retextures the player and the shader in the same frame.