How it works
You write the chords. The engine decides where every voice goes and how it travels there, and you can reshape each part of that without losing the rest.
1Find your way around the top bar
The bar across the top holds everything about the piece as a whole. From left to right:
- Library. Your saved pieces and the examples. You can also open a piece file here.
- Name
- Piece name and save dot. Click the name to rename the piece. The dot is hollow if the piece has never been saved, green when everything is saved, and amber when there are unsaved changes.
- New, Save, Save as new. New writes a fresh piece from a new harmony seed. Save as new keeps the original and saves a copy.
- Undo and Redo. Step back and forward through your changes, including rerolls.
- HarmonyVoicing
- Layer locks. A piece has four layers, and each one gets its own seed: the number its random choices start from. A locked layer (filled in, with a closed padlock) stays exactly as it is when you reroll. An unlocked layer (outlined, with an open padlock) gets a new seed. Click a lock to switch it.
- Reroll. Gives every unlocked layer a new seed, all at once. It's greyed out when everything is locked.
- Settings and Guide. Trace looks, themes and accent color; and this Guide.
What each layer covers when it's rerolled:
- Harmony: the chords. Rerolling it writes a whole new progression in place of yours, so it starts locked.
- Voicing: which note each voice sings, within the same chords. How far a reroll can wander is set by Variation on the Voicing tab.
- Motion: the order voices leave in, when the departure order is set to random.
- Sound: each voice's detune and place in the stereo field, and the shape of the reverb.
For example: keep Harmony locked, unlock Voicing, and press Reroll. You hear the same chords sung by a different arrangement of voices. Don't like it? Reroll again, or Undo.
2Write the harmony
On the Harmony tab, type chord names, one per line. A few extras: =G#6 gathers every voice onto one note, Amaj9:6 holds a chord for 6 seconds, and Emaj9[E2 B3 G#4 …] pins an exact voicing. The harmony seed can write a whole progression for you. Keep it locked to protect chords you've written.
3Shape the voicing
The Voicing tab decides which note each voice sings. Choose how many voices, then balance the sliders: continuity (small steps), coverage (every chord note present), stacking (unisons avoided or welcomed), spacing and variation. Each slider is a weight in the score that picks every voice's next note, as step 9 of The math explains. The highest note and the bass rule set the range.
4Set the motion
The Motion tab controls how voices travel: the glide time, the shape of the curve, and the departure order. Add stagger and the voices leave one after another, low to high, high to low, largest leap first, or at random.
5Choose the sound and the look
The Sound tab picks the tone and sets detune, stereo width, reverb and brightness. In Settings, a trace look decides how the lines are drawn (phosphor, laser, aurora and more), and the interface theme and accent color dress the page.
6Lock what you love, reroll the rest
Four seeds (harmony, voicing, motion and sound) make every random choice repeatable. The lock buttons in the top bar (step 1) keep a layer as it is, and Reroll gives every unlocked layer a fresh seed. Keep the chords, reroll the voicing, and listen. Undo brings back anything you liked better.
7Save, and reopen exactly
The Library keeps your pieces in this browser. A piece file stores the chords, the seeds, every setting and the resolved notes. If a future version voices chords differently, an older piece still plays its saved notes, until you change its chords, voicing or motion, or choose Re-voice with this engine.
8Export
The Export tab saves a piece file, WAV and MP3 audio, MIDI with every glide kept as pitch bend, chord-only MIDI, a MusicXML score, or everything at once. Video plays the piece once and records it, using the piece's trace look.
9Works offline
Chord Glide is a single page. Open it from a file on your computer or from a website, and every export downloads straight to your computer. Keep lame.min.js beside it for MP3 export; nothing else is needed, not even an internet connection.
The math, step by step
You don't need any music theory or algebra to follow this. Each step builds on the one before, and the small tools let you try things as you go.
1A note is something vibrating
Every sound is air being pushed back and forth. How many times it does that each second is its frequency, measured in hertz (Hz). The A that orchestras tune to vibrates 440 times a second, so it's 440 Hz. More vibrations per second sound higher.
2Doubling makes an octave
Double a frequency and you hear the same note, only higher. 220 Hz, 440 Hz and 880 Hz are all the note A, each one an octave above the last.
Your ears hear ratios, not differences. Going from 220 to 440 Hz sounds like the same size jump as 440 to 880 Hz, even though the second jump is twice as many hertz. Keep that in mind; it explains everything that follows.
3Twelve equal steps fill an octave
Western music splits every octave into 12 steps called semitones. On a piano that's every key, white and black, from one C up to the next C.
For the 12 steps to sound equal, each one has to multiply the frequency by the same amount. Which number, multiplied by itself 12 times, gives 2? About 1.0595. So each semitone raises the frequency by roughly 6%.
4Every key gets a number
To do math with notes, each piano key gets a number. This tool uses the standard MIDI numbering: middle C is 60, the key just above it (C♯) is 61, and the tuning A is 69. One number up is one semitone up, and 12 numbers up is an octave.
5The formula that turns numbers into sound
f(n) = 440 × 2(n − 69) ÷ 12
Read it from the inside out:
- n − 69: how many semitones the note is above the tuning A (negative means below).
- ÷ 12: how many octaves that is. Three semitones is a quarter of an octave.
- 2…: double once for every octave. Two to the power of a quarter is about 1.189.
- 440 ×: start from the tuning A and scale it.
Example: the C above the tuning A is note 72. Then 72 − 69 = 3, and 3 ÷ 12 = 0.25, and 20.25 ≈ 1.189, and 440 × 1.189 ≈ 523.25 Hz.
6Cents: the pitches in between
Between two neighboring notes there are 100 cents. While a voice glides, it passes through every pitch in between. That's why labels show things like D5 +43¢: 43 hundredths of the way from D5 up toward D♯5. The formula still works for those; n can be 74.43.
7A chord is a set of note names
A chord is several notes sounding together, and its name tells you which ones. The letter is the root. The rest adds notes counted up from it: maj means major (bright), m means minor (darker), and numbers like 7, 9, 11 and 13 add extra notes on top. Which octave a note sits in doesn't change its name; any E counts as an E.
8Many voices, few note names
Emaj9 has five note names, but a piece might have 11 or 14 voices. Each voice picks one of those names and an octave to sing it in, so some names show up in several octaves: E2, E3 and E5, for example. Spreading the voices out from low to high like this is called a voicing.
9Moving with the least effort
When the chord changes, every voice needs a new note. The engine looks for the arrangement where the voices move as little as possible in total, counting semitones. Musicians call this smooth voice leading.
C major (C, E, G) to A minor (A, C, E). C and E belong to both chords, so those voices stay put. Only G moves, up two semitones to A. Total movement: 2.
To choose, the engine gives every possible arrangement a score and keeps the lowest. The score adds up:
- Movement: the semitones each voice travels, with big leaps costing extra.
- Missing notes: a penalty if one of the chord's notes isn't sung by anyone.
- Unisons: a penalty when two voices land on exactly the same note.
- Spacing: a small preference for voices spread evenly rather than bunched up.
Those are the sliders on the Voicing tab; each one changes how much its rule counts. With 14 voices there are billions of possible arrangements, far too many to try one by one. So the engine works upward from the lowest voice, keeping only the cheapest way to reach each possibility. It's like finding the shortest route on a map without driving every road. (The technique is called dynamic programming.)
10The bass follows its own rule
The lowest voice usually sings the chord's root, like the E of Emaj9, or the note after the slash in a chord like Amaj7/B. That gives the harmony a floor to stand on. The Bass setting offers a few other rules.
11Gliding on an S-curve
Voices don't jump between notes. Each one slides along a curve that starts slowly, speeds up in the middle, and settles gently. The default curve is called smoothstep:
s = 3x² − 2x³
Here x runs from 0 (the start of the glide) to 1 (the end), and s says how far along the voice is. The dashed line shows a plain straight slide for comparison.
The slide happens in note numbers, not hertz. Halfway through a glide from note 60 to note 64, the voice is at note 62, and then the formula from step 5 turns that into hertz. Because your ears hear ratios (step 2), this sounds even. Sliding in hertz instead would sound lopsided: rushed at the bottom, slow at the top. Over an octave from C, the halfway point in hertz is already a G, seven of the twelve semitones up.
12Seeds: randomness you can repeat
A few choices are left to chance: how widely the first chord spreads out, which of two equally good arrangements wins, and the order voices leave in. A seed is the starting number for the random choices. The same seed always gives the same "random" results, so a piece can be rebuilt exactly. The four seeds (harmony, voicing, motion and sound) let you reroll one layer and keep the rest.
13All together
- You write chord names.
- Each chord becomes a set of note names.
- The voicing gives every voice one note in one octave, moving as little as possible.
- Each voice glides to its new note along the S-curve, in note numbers.
- The formula turns every in-between note number into hertz.
- An oscillator per voice vibrates at those frequencies, and you hear the chord change.
- The same numbers draw the lines you see.
Shortcuts
Keys for the things you do most. They work whenever you're not typing in a text box. On Windows and Linux, use Ctrl wherever you see ⌘.
▶Playback
- Space
- Play or pause
- M
- Mute or unmute
◐View
- V
- Cycle the view: auto zoom, scrolling, whole piece
- T
- Theater mode: the stage spans the page
- F
- Full screen
- Esc
- Close a popup or leave full screen
↺Editing
- ⌘ Z
- Undo
- ⇧ ⌘ Z
- Redo
- ⌘ S
- Save the piece
?Windows
- ?
- Open this Guide
- ⌘ ,
- Open Settings
- L
- Show or hide the Library
Version history
Every release of the app so far, newest first. The releases tagged with an engine version changed how pieces are voiced; Engine history has the details.
3.9.1Full glow in videos again1 Nov 2026
3.9's lighter glow made videos look duller, so the original glow is back, exactly as in 3.8. Recording stays faster than 3.8 because each frame is still drawn only once, and on 120 Hz screens it no longer draws frames the video can't use. Videos are now recorded at 12 Mbps, up from 8.
3.9Smoother video, volume in the player1 Nov 2026
Video recording draws each frame once instead of twice, draws the soft glow at half resolution, and reuses the background, so frames take less than half the work during the opening and the zooms. The audio is prepared before recording starts, with a brief still lead-in, so the start no longer stutters. Volume moved from the Sound tab to the player bar and works like a video player: with a mouse, hover over the speaker for the slider and click it to mute; on a touch screen, tap it for the slider. M mutes too.
3.8.4Website and source links1 Nov 2026
Chord Glide lives at chord-glide.noizgenie.com, and its source code is on GitHub. The About page links to both, and link previews now include the preview image.
3.8.3Link previews1 Nov 2026
The page describes itself for search results, and the website build adds link previews, so a shared link shows Chord Glide's name, description and a preview image in Discord, Slack, iMessage and social sites.
3.8.2Review fixes1 Nov 2026
The About page's privacy section no longer makes a claim a hosting page could contradict: what Chord Glide itself does is stated first, then where this copy keeps your Library. The Guide's tabs tell screen readers whether they run down the side or across the top.
3.8.1Top bar on smaller screens1 Nov 2026
The top bar now has three tidy layouts instead of wrapping wherever it ran out of room. Wide screens keep one row. Medium widths put the piece, file, edit and window controls on one row, with the layer locks and Reroll together below. Phones get three rows, with the locks spelled out in full across the width. Nothing overflows the screen, down to 320 pixels wide.
3.8Engine history1 Nov 2026
The engine now has its own history page in the Guide, with technical detail on what each engine version changed and how piece files are versioned. Releases that changed the engine are tagged here; the tag opens Engine history.
3.7A logo1 Nov 2026
Chord Glide has a logo: voices fanning out from one note, in the Aurora colors. It's the browser tab icon and sits beside the name. The header now credits Noizgenie instead of showing a date, and its description is shorter.
3.6.1Working links on the About page1 Nov 2026
The About page shows the full MIT License when you ask for it, and links to lamejs, LAME and the LGPL-3.0. Version history now ends with a link on to About, and About links back to How it works.
3.6About page and website build1 Nov 2026
A new About page in the Guide covers privacy, the license and credits. Chord Glide can now also be built as a website folder, ready to host, with strict security settings.
3.5.4New name: Chord Glide1 Nov 2026
Chord Glide Engine is now just Chord Glide, by Noizgenie, released under the MIT License. Nothing else changed: the engine is still 3.1, so pieces sound exactly as before, and your settings and Library carry over.
3.5.3Review fixes1 Nov 2026
Corrected The math: gliding evenly in hertz rushes at the bottom and slows at the top, not the reverse. Status messages now fade after a few seconds, leaving just the save state. MP3 export no longer reaches out to the internet for the encoder.
3.5.2A tour of the top bar1 Nov 2026
How it works opens with a tour of the top bar, showing each control's icon. It explains the layer locks in detail: what locked and unlocked look like, what each layer covers when rerolled, and an example.
3.5.1One Guide link1 Nov 2026
The controls panel ends with a single Read the Guide link, which reopens the page you last read, instead of four separate links.
3.5DAW-style top bar1 Nov 2026
The top bar is grouped like a DAW control bar: library and piece name with a saved indicator, file actions and undo and redo as icons, lock buttons for the four layers beside Reroll, and Settings and the Guide on the right. New shortcuts: ? opens the Guide, ⌘ , opens Settings and L toggles the Library. How it works, Shortcuts and Version history now share the style of The math. Fixed: choosing a Guide page no longer empties the controls panel behind it.
3.4The Guide1 Nov 2026
The Guide: How it works, The math, Shortcuts and Version history in one window, with a sidebar to move between them. The math is a new step-by-step explanation for beginners, with a note slider you can hear, a chord explorer, a voice-leading example and the glide curve.
3.3.2Honest storage1 Nov 2026
The library tests whether this browser really keeps saved pieces, and says so instead of appearing to save. Opening a piece from an older engine describes accurately what you'll hear. Stricter checks on saved notes in piece files.
3.3.1Accent color1 Nov 2026
Choose your own accent color in Settings, on top of any theme. The How it works, Shortcuts and Version history links now sit at the bottom of the controls panel.
3.3Looks and themes1 Nov 2026
Settings window. Trace looks with glow (phosphor, laser red, laser blue, amber CRT, aurora, spectrum, neon, custom), saved with the piece and used in video. Eight interface themes, including Cloud, Ice, Deep Teal, Studio Black and Cocoa.
3.2.3Icon transport bar1 Nov 2026
Icon transport bar: play and pause, back to the start, view options, theater and full screen. The view and label choices moved into a popup behind the view button; V cycles the view.
3.2.2Full-width whole view1 Nov 2026
The whole-piece view uses the full width. The label column on the right is only kept while scrolling, and labels near the right edge sit to the left of their dots.
3.2.1Theater height1 Nov 2026
Theater mode keeps the stage at its normal height and only makes it wider.
3.2Theater and full screen1 Nov 2026
Theater mode widens the stage to the full page, and full screen fills your screen with it. How it works and the version history moved into this window, opened from the footer. Engine unchanged (3.1).
3.1Hardening1 Nov 2026
Hardening. Highest note is now a hard limit. "Nearest chord tone" only picks chord tones. Pieces save their resolved notes and reopen exactly under later engines; files from newer versions are refused instead of silently changed. MIDI glides are accurate to within 5 cents. Video keeps its last half-second and the full fade. Every export downloads directly as its own file.
3A creative tool1 Nov 2026
A standalone creative tool. Named pieces you can save, rename and delete. Separate, lockable seeds for harmony, voicing, motion and sound. Voicing controls, bass modes, register, departure order and stagger. Auto zoom from the whole piece into a scrolling view and back out. Undo and redo. Export to a piece file, WAV, MP3, MIDI with glides, MIDI chords, MusicXML and video.
2Engine fixes1 Nov 2026
Engine fixes: chords with more than 8 notes, reproducible seeded shuffles, slash-chord bass handling, a warning when a chord can't be voiced by the rules, more chord spellings.
1First release1 Nov 2026
First release: gliding voices, editable chords, a seed, scrolling and whole-piece views.
Engine history
The engine turns your chords, seeds and settings into notes and timing. Its version only changes when the same piece could come out differently.
The promise is simple: the same chords, seeds and settings on the same engine give the same notes, in any browser on any computer. Every saved piece records the notes it was voiced with and which engine voiced them. A piece from a different engine plays exactly as saved until you change its chords, voicing or motion; then the current engine voices it again.
The current engine is 3.1, unchanged since app 3.1. Later releases touched the engine's code without changing a single voicing (saving trace looks in pieces, stricter checks on saved notes, the new name), so the number stayed the same.
3.1Hard limits and saved notesapp 3.1
- Highest note is a hard ceiling. Upper voices are searched from the bass + 3 semitones up to exactly the Highest note setting. Engine 3.0 stretched the range to at least an octave above that floor, so a low setting could be exceeded. The opening chord can no longer pass it either: when its usual range (a fifth above the bass up to the setting − 4) has no chord tones, it now widens only down toward the bass, where engine 3.0 widened it an octave both ways.
- Tight registers. If no chord tone fits between the bass + 3 and the ceiling, the floor drops to the bass + 1. If nothing fits even then, the upper voices hold the bass note and the chord is flagged.
- Nearest chord tone only considers the chord's own pitch classes, preferring the root on a tie. Engine 3.0 also counted a slash-chord bass note, so the bass could leave the chord.
- Saved notes (realizations). Each saved piece stores every chord's target notes, plus each voice's departure offset and glide duration, tagged with the engine version. On opening, notes from the same engine are discarded, because the settings rebuild them exactly. Notes from a different engine play as saved.
- File values are clamped to the controls' ranges: chord length 1.5–12 s, glide 0–5 s, tempo 30–180, Highest note G4–C7. Files with a newer format are refused instead of being silently changed.
3.0Controls and separate seedsapp 3
2Reliabilityapp 2
- Chords with more than 8 notes. Each search state tracks which chord tones are covered in 12 bits instead of 8, so large chords no longer overflow into the pitch part of the state.
- Shuffles are the same in every browser. Seeded shuffles use Fisher–Yates instead of sorting with a random comparison, whose result depends on the browser's sort algorithm.
- Slash chords. The bass note is no longer added to the chord's tones, so in C/D the upper voices no longer pick up a D.
- A second try, then a warning. If no voicing fits within 6 semitones of every voice, the search retries within 12. If that fails too, each voice takes its nearest chord tone and the chord is flagged.
- The top voice moves like the others. Engine 1 made it 10% more reluctant to move.
- More spellings: ø7, Maj and MAJ.
1First engineapp 1
- Glides in semitones. Pitch moves in semitone space and sounds at f(n) = 440 × 2(n − 69) ÷ 12, eased by smoothstep, smootherstep, cosine or linear.
- Bass on its note between C2 and B2.
- Voice leading. Upper voices are assigned together by dynamic programming, from the bottom voice up, never crossing. Each considers chord tones within 6 semitones. A move of d semitones costs |d| + 0.1d²; landing on the same note as the voice below costs 1.5; each gap g between neighbors costs 0.01g²; each chord tone left out costs 3.0; and a seeded jitter of up to 0.004 breaks exact ties.
- Opening chords. Out of a single note, chord tones are spread from a fifth above the bass up to C6, and the voices glide there over max(2.4 s, 1.9 × glide).
File format
Piece files are JSON, marked "format": "chord-glide-piece" with "formatVersion": 3 since app 3. Fields added since are optional, so older versions simply ignore them: saved notes (realization, app 3.1) and trace looks (view.trace, app 3.3). Top-level fields this version doesn't know are kept when a piece is saved again.
About
Chord Glide is a songwriting instrument by Noizgenie. Write chords, hear them as gliding voices, and shape how they move.
Use it online at chord-glide.noizgenie.com, or get the source code and the downloadable app on GitHub.
Privacy
Chord Glide itself has no accounts, ads, analytics or tracking, and sets no cookies. The voicing, the sound, the video and every export are made in your browser, and Chord Glide never uploads what you write or play. Exported files go straight to your computer.
License
© 2026 Noizgenie. Chord Glide is free and open source under the MIT License. You can use, change and share it, including commercially, as long as the copyright and license notice stay with it.
Read the MIT License
MIT License
Copyright (c) 2026 Noizgenie
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Credits
MP3 export uses lamejs 1.2.1 by Alex Zhukov, a JavaScript port of the LAME encoder, licensed under the LGPL-3.0. It's loaded as a separate, unmodified file and isn't covered by the MIT License.