Oscilla Live (olive)
Live coding with sound and image together, in the browser: you write a line and run it, and it sounds at once -- every synth drawing its own animated scope (a wave, a polar rosette, a Lissajous figure, a ridge of its past), shapes and words that move with the sound, the whole stage folded, warped and tinted, laid out on a grid and dealt about on the beat. Nothing is compiled or restarted: every line changes what is already playing.
Start here
Open Oscilla Live -- or /live on your own
Oscilla server -- and press Start (or Random example to hear one
first). Type these, one at a time, running each with Ctrl+Enter:
synth(uid:bass, wave:saw, freq:Pwhite(40, 90), dur:0.25, amp:0.15, sub:0.6)
gui(bass, size:1, view:xy, trail:1, color:#ff2a6d)
bass > rotate(follow(bass.t, 0, 360))
level(bass, 0.3, 8, exp3)
gate(bass, 0, 4)
A bass line and its octave below; it draws itself across the screen; the
drawing turns with the pitch; it sinks to a third of its level over eight
beats; then it lets go, and its sound dies away. gate(bass, 1) brings
it back. Ctrl+. stops everything.
Every time in a line is in beats -- a second each at the default 60 bpm,
tempo(120) for twice as fast.
The pages
| Shaping a sound live | level, gate, hush, hold -- turning a sound down, letting it go, stopping it, freezing its pattern |
| Sound | fuzz, sub, reverb, moving parameters, envelopes, patterns, microtones, random values you can keep |
| Seeing what is happening | meters, the machine's load, drawings that follow the sound, the external audio input, the camera, lines run on the beat, recording |
| Visuals | the stage folded, mirrored, tiled, tinted; the grid; blend; shapes thrown about |
| Keys | the console's keys |
| Hosting, and rooms | Live on any web host, and performers together through a relay |
| Live coding: the tour | the whole of it: sound, image, linking them, a set in practice |
| The live console | the console itself: buffers, stashes, perform mode, the projector |
Each thing a line can make has its page under Reference in the menu:
synth(), gui(),
shape(), text(),
follow() and the signals ...
A few habits
- Name every sound --
synth(uid:bass, ...). The name is how you reach it afterwards:level(bass, ...),gate(bass, 0),bass > rotate(...). The console names an unnamed one for you. - Run a line again to change it. A sound with the same name changes in
place -- except a
poly:one: Ctrl+Enter adds a voice, Ctrl+Alt+Enter gives the line to every voice (see Shaping). - Blocks. A line starting
#$heads a block; Ctrl+Enter on it runs the block, Tab folds it away. - Comment a line out and run it (Ctrl+Shift+/, then Ctrl+Enter): what it started stops.
Tip: use ← → or ↑ ↓ to navigate the docs