Layers
Each instrument gets one line: a name (kick, bass, lead…), a sound, then its settings.
kick kit_bd gain=0.8 : x... ..x. x... .... bass finger_bass octave=2 : x... .... x... ..x.
Fizz is a programming language for LLMs to create and remix music.
A track is a few readable lines: tempo, key, chords, and one line per instrument. Notes are numbers in the key, so nothing plays out of key. In our tests, models write it correctly about 29 times in 30 on the first try, and most edits change a single line. Every track on Fizz FM is written in Fizz, and your coding agent can write them too.
Change a step, a chord or an instrument, then press Play. Highlighted lines are the instruments playing right now.
You change a track the way you change code: a line or two at a time, and every step plays. That's why models get edits right, and why you can read exactly what they changed. Pick a step, press Play, and switch steps while it plays to hear each change come in on the beat.
fizz score v1bpm 82key F majorswing 0.33 section loop bars=4 chords: Imaj7 vi7 ii7 V7 kick kit_bd gain=0.8 : x... ...x ..x. .... snare kit_sd gain=0.5 room=0.15 : .... x... .... x... hat kit_hh gain=0.3 hpf=300 : x.x. x.xx x.x. x.x. pad epiano octave=3 gain=0.4 room=0.35 : x... .... ..x. .... lead marimba octave=4 gain=0.35 room=0.4 delay=0.2 : 1| 3 . 5 . 7 . 5 . . . 3 . 1 . . . 2| 3 . 5 . 6 _ . 5 . . 3 . 1 . . . 3| 4 . 6 . 1' . 6 . . . 4 . 6 . . . 4| 2 . 4 . 5 _ _ . . . . . 7, . . .
Enough to read any track. Your agent learns the rest from the skill.
Each instrument gets one line: a name (kick, bass, lead…), a sound, then its settings.
kick kit_bd gain=0.8 : x... ..x. x... .... bass finger_bass octave=2 : x... .... x... ..x.
Each bar is 16 steps. x is a hit, . is a rest, _ holds the note, and | starts the next bar.
hat kit_hh : x.x. x.xx x.x. x.x. | x.x. x.x. x.xx x.x. pad warm_pad : x___ ____ ____ ____
Chords are numbered by where they sit in the key: I is the first, vi the sixth, and lowercase means minor. :2 makes a chord last two bars.
key A minor chords: i:2 VI:2 III:2 VII:2
Name each part and set its length in bars. Layers can drop in or out between sections.
form: verse chorus section verse bars=8 section chorus from=verse drop=kick
Notes are numbers in the key (1 is the root). Add ' to go up an octave and , to go down. Shape the sound with gain, filters, reverb and delay.
lead kalimba gain=0.35 room=0.4 delay=0.2 : 3 . 5 . 6 . 1' . 5, . . . . . . .
An agent writes a loop for the scene, and you change the tempo or swap the lead in one line.
Users say “make it darker” or “add a bassline”, and your model sends back a small change instead of a new track.
A background track for every video, story or level, embedded with the Fizz player.
Your coding agent can then write and remix tracks. It works with Claude Code, Cursor, Codex and other agents that use skills. The CLI checks a track and reports errors by line, so your agent can fix them itself.
npx skills add hypersocialinc/fizz
npm i -g @hypersocial/fizz && fizz check track.fizz
Add Fizz FM to Claude or ChatGPT and ask for a beat. The assistant makes it with Fizz FM's composer, which checks every note, and you get a link that plays and jams in any browser. Where the app supports it, the player opens right in the chat. Free to try, with a few AI tracks a day.
https://fizz.fm/api/mcp
Make me a slow lo-fi beat in F minor with a soft kalimba hook.
Coming soon: sign in with your Fizz FM account to use your own credits and post to your profile.
Add the Fizz player to your site with one script tag, then point it at any Fizz FM track or your own Fizz. See the player reference for attributes, theming and the JavaScript API.
<script src="https://fizz.fm/player.js"></script> <fizz-player track="tidal-arpeggio"></fizz-player>
Strudel is a live-coding music language. Fizz converts both ways.
Turn any track into Strudel code you can paste into strudel.cc. Use Export as Strudel in the editor above, or run fizz export --strudel.
Turn Strudel code into a Fizz track you can edit and play: fizz import track.js.