Interpreted · functional · strongly typed

Flow

A programming language for making music. Write note streams, chords, and musical-context blocks as code — and hear them the instant you press play.

A pure tone

The hello-world — a one-second A4 sine. Press play to hear it.

hello.flow
use "@audio"
(play (createSineTone 440Hz 1.0 0.5))

A note-stream melody

A C-major run, written inline as a note stream at 120 BPM.

scale.flow
use "@audio"
use "@composition"

tempo 120 {
  (play | C4q D4q E4q F4q G4q |)
}

A chord progression

A ii–V–I in C, played from chord brackets inside a key context.

cadence.flow
use "@composition"

key Cmajor {
  (play | [D4 F4 A4]h [G3 B3 D4]h [C4 E4 G4]w |)
}

Why Flow

Ergonomics first

Composer ergonomics override runtime efficiency and type strictness. Easy cases stay fast; flexible cases stay flexible.

Genre-agnostic

Classical, EDM, jazz, pop, metal — all in one language. Designed for every kind of music, never tuned for one.

Notation roots

Notes, chords, note streams and musical-context blocks are first-class. Write musical ideas as code and hear them at once.

How it sounds

Every example below is rendered straight from Flow source. Nothing plays automatically — press play to listen.

In Five Voices — symphony excerpt
multi-voice render · 0:42
Stride & Stomp — ragtime
stride piano · 0:38
Just-intonation microtonal sketch
cent-offset tuning · 0:24