Harmonizer · v3.0

Harmonizer User Guide

Harmonizer is a workbench for roughing out vocal arrangements: enter a melody, put chords under it, generate a draft harmony in the style you want, listen to it on a real piano or choir sound, and edit until it works. It also makes rehearsal tracks for your singers and moves music in and out as MusicXML and MIDI. This guide covers everything it does.

Launch Harmonizer →  ·  Quickstart  ·  About the project

1. Getting started

Open Harmonizer from the project page (or the Launch Harmonizer link above). It opens in its own browser tab. There is nothing to install and no account: everything runs in your browser, and your work is saved in that browser automatically.

There are two ways in. Start from a melody (or a blank page), put chords under it and let Generate parts write the other voices; or open a MIDI or MusicXML file you already have (or one of the Examples) and edit it. A minimal first session of the first kind looks like this:

  1. Choose a Key, Time signature and Tempo in the header.
  2. Open Note entry, pick a duration (say, quarter note) and click on the staff to drop notes. Or open the Text panel on the right, type a melody into Melody text and press Apply text → melody.
  3. Press Space (or Play) to hear it.
  4. Open Chords and press Suggest chords for a starting harmony. Set Staves to 4, open Staves, choose a style and press Generate parts.
  5. Edit any note you don't like. Then keep it: it autosaves, and Save → as .musicxml, Save → as .mid or Save → Rehearsal tracks… take it wherever it needs to go.

Sounds. Playback loads a sample file that sits next to the app: the piano (harmonizer-piano-samples.json, about 7 MB), and from 3.0 the Choir Aahs, Organ, Strings and Flute sounds (about 1 MB each). Each loads only the first time something plays it, so the first Play on a new sound can take a moment; after that it is instant.

2. The screen at a glance

From top to bottom and left to right:

Bruckner’s Christus factus est with the Staves section open: Generate parts set to Traditional (hymn), chord suggestions, one line of controls per stave, and the score below with the chord lane on top.
The screen with the Staves section open: Generate parts and its menus, one line of controls per stave, and the score below with the chord lane on top. Here Bruckner’s Christus factus est came in as its soprano line alone, with chords from Suggest chords and the other three parts generated in the Traditional style.

The navbar holds the file and app commands; the line under it holds the song's settings; Play, Undo, Redo and the song's title sit on the bar just above the score. The table covers all three.

ControlWhat it does
SongSwitches between the songs stored in this browser. Copy duplicates the current song; the trash button deletes it (after a confirmation). See Saving, songs, backup and export.
Title (above the score), ComposerMetadata, written into MusicXML and MIDI exports and used to name exported files.
KeyThe opening key signature (major and minor keys, up to seven sharps or flats). A note with no explicit accidental takes the key signature's default. Changing this menu relabels the key without moving notes; to move the music, use Transpose to. For a key change part-way through, see Key, tempo and time changes.
TransposeMoves the whole song to another key of the same mode. See Transposing.
StavesHow many staves to show, 1–8. 4 = SATB, 3 = SAB; 5–8 add Baritone and second Soprano, Alto and Tenor parts.
TimeThe opening time signature. Numerator 1–32, denominator 2, 4, 8 or 16. Barlines follow from it.
TempoThe opening tempo, in beats per minute (20–300).
► PlayOn the bar above the score. Opens the play window and starts playing; Space does the same. Pause, Stop, Loop and the rest are in the play window (see Playback).
Undo / RedoOn the bar above the score. Step back and forward through your edits. See Undo and redo.
⚙ (Settings)Black on white, Barlines, Measure numbers, Show locked notes, Mark generated notes, Range warnings, Mark partwriting problems, Refine after Generate parts, and the song library backup. See Settings.
? HelpOpens the built-in quick-start, which links to the Quickstart and this guide.
NewStarts a fresh song without losing the current one.
Examples ▾Opens one of the example arrangements that come with Harmonizer, as a new song. See Examples.
Open…Opens a saved .json song or library backup, or imports a MusicXML (.musicxml, .xml, .mxl) or MIDI (.mid) file as a new song.
Save ▾A menu: as .json (a file Harmonizer reopens exactly), as .musicxml (for MuseScore, Finale, Sibelius and similar), as .mid (a Standard MIDI File for rehearsal apps, DAWs and notation software) or as .wav (what you'd hear on Play, as audio), and last, Rehearsal tracks… (see the next row). Arrow keys move through the menu; Esc closes it.
Save ▾ → Rehearsal tracks…Makes one part-learning track per voice, bundled in a .zip. See Rehearsal tracks.
Print / PDFPrints the score, or saves it as a PDF from the browser's print dialog.

4. Entering a melody

Clicking notes onto the staff

Open Note entry, choose a duration — whole, half, quarter, eighth or sixteenth — then click on the staff. A note of that duration appears at the pitch you clicked, after the selected note (or at the end if nothing is selected). Clicking the staff adds notes to the melody stave and to any stave with Own rhythm ticked (see Staves).

Two modifiers apply to the next note(s) you add:

A new note takes the key signature in force where it lands, so after a key change to D major a note clicked onto the F line is an F♯.

The note-entry buttons

ButtonWhat it does
+ Note before / + Note afterInserts a new note next to the selected one, starting from its pitch. With nothing selected, adds at the start or end of the melody.
Insert restInserts a rest of the current duration in the same way.
DeleteRemoves the selected note (the Delete key does the same).
Clear notesWipes the whole melody — and the chords, which are positioned relative to it. Asks first.

These work on the stave of the selected note: the melody, or any stave with its own rhythm.

Below them, the Marks row adds tempo words, rit./accel., fermatas, breaths, dynamics, hairpins, articulations, slurs, rehearsal letters and text — see Expressive marks.

5. Selecting and editing notes

Selecting

Changing pitch

The note inspector

With a single melody (or own-rhythm) note selected, the Selected panel offers precise control:

Selecting a note on a generated stave gives a smaller inspector with the pitch controls, plus a 🔓 Lock this note / 🔒 Locked — click to unlock toggle (see Generating the other parts). Selecting several notes gives the bulk operations: octave up/down, Divisi (+ 3rd below, + 3rd above, Remove, on every selected note), Lock selected / Unlock selected, and — when exactly two notes on different staves are selected — Swap pitches (Ctrl+X).

Accidentals

A sharp, flat or natural is drawn next to a note whenever it differs from what the key signature in force at that note implies — on every such note, even if an earlier note in the same measure already had it. So in D major an F♯ shows nothing, while an F natural shows a ♮ sign.

6. Undo and redo

Undo / Redo on the bar above the score, or Ctrl+Z / Ctrl+Y (Ctrl+Shift+Z also works; Cmd on a Mac). Undo covers note and chord edits, Generate parts, Suggest chords, Transpose, key/tempo/time changes, and text edits such as the title or a lyric — each typing session undoes as one step, not one per keystroke. Up to 100 steps are kept. Switching to another song, or starting a New one, starts that song's undo history fresh.

7. Typing melodies as text

The Melody text box in the Text panel is a compact shorthand that is often faster than clicking. Type or paste, then press Apply text → melody. Regenerate text from melody writes the current melody back out as text, handy for copying or for bulk edits.

Each note is:

letter + optional accidental + octave + duration + optional dot + optional ~ + optional /lyric

PartValues
LetterA–G
Accidental# sharp, b flat, n natural. Omit it to use the default of the key signature in force at that point in the song.
Octave0–8, with middle C = C4. Omit to repeat the previous note's octave.
Durationw whole, h half, q quarter, e eighth, s sixteenth. Omit to repeat the previous duration.
Dot. after the duration.
Tie~ after a note ties it to the next: A4q~ A4e.
Lyric/ followed by the syllable.
RestRq, Rh. and so on.
TripletThree notes in parentheses followed by 3: (C4e D4e E4e)3.

Example: C4q/Twin C4q/kle G4q/lit G4q/tle A4h./how G4e F4e/der F4h/

Applying text replaces the whole melody, so any generated harmony is cleared (there is no reliable note-by-note correspondence between the old and new melody). Run Generate parts again afterwards.

8. Lyrics

Every stave can carry lyrics — up to six verses, one line under the stave for each, numbered 1., 2.… when there's more than one. Syllables are centred under their notes, a hyphen is drawn between the syllables of a word, and a line (an extender) runs under a syllable that's held over several notes.

Typing note by note

Click a note and press Enter (or click in the Lyric box in the Selected panel). Then just type the words:

The small v1–v6 menu beside the Lyric box chooses the verse you're typing; that verse's line is shown darker on the score.

Filling a whole verse at once

In the Lyrics panel, choose the Verse, type or paste the words in the box — Twin-kle twin-kle lit-tle star, how I won-der what you are__ — and press Fill from start (or Fill from selected note to carry on from where you are). Hyphens split words into syllables; an underscore holds a syllable over one more note, either on its own (_) or at the end of a word (are__ holds are over two more). Load verse puts the stave's existing words for that verse in the box so you can edit them as text; Clear verse removes them. The buttons work on the selected note's stave, or the melody.

Words for every voice

Copy lyrics to the other staves copies every verse from the selected stave (or the melody) to every other stave that has its own notes, beat for beat: a note that starts with a syllable gets it, and a note that starts in the middle of one gets a hold. It replaces what those staves had, so use it once the parts are written (Undo puts it back).

Lyrics also go in and out: /lyric in the melody text (verse 1), MusicXML import and export (every verse, with hyphenation and extenders), and MIDI (verse 1, as lyric events).

9. Chords

Placing chords

The chord lane runs across the top of the score. Open Chords, set the chord you want — a root (C, C♯/D♭, and so on) and a quality — then click in the lane at the beat where it should start. Clicks snap to the nearest beat. A chord holds until the next chord, so clicking partway through an existing chord's span shortens it and begins a new one at that point. Click close to an existing chord's marker to select it instead.

Qualities available: major, minor, diminished, augmented, dominant 7th, major 7th, minor 7th, diminished 7th, sus2 and sus4. There is at most one chord per beat.

Editing chords

A selected chord appears under Selected chord in the Selected panel, where you can change its root or quality or press Delete chord.

Suggest chords

Suggest chords makes a diatonic guess — one chord per measure — from the melody notes in each measure and the key in force there (so it follows key changes). Treat it as a first draft. If chords already exist you're asked before they are replaced. Clear chords removes all of them.

Chords from voices

Chords from voices analyses the notes the staves actually sing — the melody plus every stave that has its own rhythm or generated notes — and names the chord for each window, then merges repeats. The menu beside the button sets the window: every beat (a dotted quarter in 6/8, 9/8 and 12/8), half measure, or every measure. Longer notes count more than passing notes, the lowest voice is favoured as the root, and chords that fit the key in force get a slight preference; it can name major, minor, seventh, diminished, augmented and sus chords. If a window has no notes the previous chord simply carries on. If chords already exist you are asked before they are replaced. It works best once the other staves are written; on a single melody it is little better than Suggest chords.

Typing chords

The Chords panel takes one symbol per measure: C G7 Am Fmaj7. Symbols are a root (A–G with optional # or b) plus an optional quality — m, dim, aug, 7, maj7, m7, dim7, sus2, sus4; blank means major. Press Apply text → one chord per measure; this replaces all chords.

Hearing them

Chords are played under the voices. Untick Play chords in the Chords section to hear the vocal lines alone; the choice is remembered in this browser.

10. Staves, parts, clefs and instruments

The Staves control shows one to eight staves. Four defaults to SATB — Soprano and Alto on treble clef, Tenor on the treble clef marked “8”, and Bass on bass clef. Three defaults to SAB; five to eight add Baritone, Soprano II, Alto II and Tenor II.

Open the Staves section to see Generate parts on top and, below it, one line per stave, with the controls lined up in columns. The melody stave's line is highlighted, and a stave written by Generate parts carries a small generated tag:

Divisi on one stave

A note can carry a second note on the same stem. Select a note and use Divisi in the Selected panel: + 3rd below or + 3rd above adds one, then set its letter, octave and accidental there; ⇅ Swap exchanges it with the main note (the one dragging and the arrow keys move), and ✕ removes it. With several notes selected, the same buttons add or remove a divisi on all of them. Divisi notes are drawn with their own accidentals, dots, ledger lines and ties (seconds sit either side of the stem), play on their stave's sound and in its rehearsal track, move with Transpose and the octave keys, count in Chords from voices, and are checked by Mark partwriting problems as a line of their own. MusicXML writes them as chords on one stem; MIDI plays both notes.

Barber’s The Coolin on four staves; where the altos divide, two noteheads share one stem, with ties above and below.
Barber’s The Coolin: the second alto line is carried as divisi on the Alto stave, two notes on one stem only where the part divides.

Notes on every stave line up on a shared time grid, and barlines run through all staves. Reducing the stave count removes the extra parts; if that would remove the melody stave, the melody moves to a remaining one.

11. Generating the other parts

With more than one stave and at least one chord placed, a Generate parts button appears at the start of the Staves section, with a style menu beside it. It fills every eligible non-melody stave with a draft worked out from the melody and the chords beneath it: a bass line planned first, sensible voice ranges, doubling rules, and a search across the whole passage (not just chord by chord) for smooth voice leading. Parallel octaves are always avoided; how the rest is weighed depends on the style — parallel, contrary and hidden fifths and octaves, voices overlapping, cross-relations (F in one voice, F♯ in another straight after) and augmented seconds are all costed, most heavily in Traditional. Generated notes are spelled from their chord: in D minor the leading tone is C♯, not D♭. The tune can be on any stave: voices placed above it stay above it, and the bass stays below it with room for the voices in between. The full rule set, with every weight, is in the Partwriting Guide (PDF).

Styles

StyleCharacter
Close harmonyThe default. Contemporary a cappella in the vein of Gjeilo, Lauridsen and Whitacre: close spacing, doubled thirds welcome, parallel fifths and planing between upper voices tolerated.
Traditional (hymn)Textbook four-part writing: no parallel fifths or octaves (nor by contrary motion), hidden fifths and octaves in the outer voices discouraged, no voice overlaps, cross-relations or augmented seconds where they can be avoided, complete triads with the root doubled rather than the third, soprano–alto and alto–tenor within an octave, smooth inner voices, leading tones and sevenths resolved properly, and more contrary motion against the melody.
Open (wide)Open-position voicing: the upper voices spread a fifth to a tenth apart, the tenor and bass sit lower to make room, fewer unisons, and fifths and octaves treated fairly strictly.

The style is saved with the song. Pick one and press Generate parts; to compare, make a Copy of the song and generate each copy in a different style. Locked notes are kept whichever style you use.

This is a starting draft, not a substitute for a real voice-leading pass by ear. Expect the occasional awkward leap or unresolved leading tone. Turning on Mark partwriting problems in Settings shows you any parallels, hidden or contrary fifths and octaves, overlaps, cross-relations and augmented seconds in the result (Close harmony tolerates parallel fifths on purpose), and Range warnings point out notes a voice would strain for — handy after you've dragged notes around by hand.

Which staves it fills. A stave is eligible if it's blank — including one you've ticked Own rhythm on but haven't written into yet — or if its current content is itself a previous Generate parts result. A hand-built Own rhythm stave is skipped entirely. To hand one back, untick Own rhythm (this discards its notes, and asks first).

How it reads the music

Generate parts doesn't write note by note from left to right. It reads the whole piece first, then chooses each voice's line for the whole passage at once.

After a run, the status line reports what it heard: how many cadences, suspensions and secondary dominants, and any key areas outside the key signature (“heard G major in mm. 9–16”).

Refining the draft as lines

The search above judges each voice only a few notes at a time, which tends to write chords more than lines: an inner voice parks on a common tone for bars on end, or rocks back and forth between two notes. So after the draft is written, Generate parts goes over the whole thing again, one small change at a time, and keeps a change only if the result is better overall — by every rule above and by rules that need a whole phrase of one voice to judge:

The changes it tries: re-plan one voice across a whole phrase with everything else held; move a single note (which can split a long held note), a whole held note, or the rest of a phrase to another chord tone or octave; and exchange notes between two voices for one to four notes — the classic voice exchange, including a brief crossing of two inner voices. The bass was planned first on its own terms, so the refine pass changes it only reluctantly. Locked notes never move, and a suspension stays put together with the notes that prepare and resolve it. The same song always refines the same way.

When it's done, a Refine report button appears in the status bar. It shows each voice's line measures before and after (how often it holds through a chord change, its average span per phrase, how much it shadows the melody), then lists every passage that changed, by voice and measure, with the main reasons (“Alto, mm. 5–6: 3 notes — breaks up a long held note; exchanged with the Tenor”). Click a line to scroll the score there.

Refine parts, next to Generate parts, runs the same pass on the parts as they stand now — after your hand edits, say — and then chooses the added notes again. Your edited (locked) notes stay exactly as they are, rhythm included; anything else may be improved around them. Words and marks you put on a part stay with any note that still starts at the same beat, and a stave whose rhythm you changed by hand is listened to but not rewritten. One Undo takes a refine back. To hear the plain draft without the refine pass, turn off Refine after Generate parts in Settings.

Independent rhythm

Generated voices keep their own rhythm rather than striking a fresh note on every melody note: an inner voice holds — tied — through repeated or purely ornamental melody notes, and only moves when the underlying harmony genuinely changes.

Chords under a held note. When the chord changes while the melody holds a note — a whole note over C, then F, then G — the other voices move with each chord, so the harmony you wrote is the harmony you hear. (Before 2.33 only the chord at the start of each melody note counted.) Only a real change of chord counts; a chord repeated on the next beat doesn't split anything.

Added notes

Where the melody holds, the voices may also add a note of their own, which is what makes each part a line to sing rather than a string of chord notes. The Added notes menu beside the style menu (saved with the song) sets how many: No added notes, Some (the default) or More. There are four kinds:

An added note takes the second half of the note it splits (a suspension takes the first half) and is never shorter than an eighth; in 6/8 a dotted half splits into two dotted quarters. Some adds them under melody notes a half note or longer (a quarter or longer in Traditional style); More about twice as many, under quarter notes too. They're spread between the voices so each gets a turn, and they obey the same rules as everything else, more strictly: no parallel fifths or octaves in any style, none of the faults Settings can mark (fifths or octaves by contrary motion, hidden fifths and octaves, overlaps, cross-relations, augmented seconds), no crossing or doubling another voice at that moment, no suspension against its own resolution. Each is spelled from its line: a passing note rising from E to G is F♯, not G♭. Because they fall where the melody holds, they're sung as short melismas on the melody's syllable when you copy the words to the other staves. The status line and the Refine report count them.

Repeated music

When music comes back — a second verse, a refrain, a motif stated twice, a phrase repeated a step higher over chords moved the same way — Generate parts gives it the parts it had the first time, rather than voicing it afresh for no musical reason. The Repeated music menu beside the style menu (saved with the song) sets how:

What counts as a repeat. About a bar or more (at least three beats) of the same melody over the same chords, in the same place in the bar. A sequence counts too: the melody and the chords all moved by the same interval (the parts are moved by that interval, and by an octave where a voice would leave its range). Small differences are forgiven: a changed note, or a quarter split into two eighths for the words of a later verse, as long as the chords agree and no more than a beat differs at a time. A different pickup or ending simply isn't part of the match. A diatonic sequence counts as well (from 2.43): the chords and the tune moved by the same number of steps in the key, so the chord qualities change on the way (C F G, then Dm G Am). Its parts are moved by scale steps, so a third stays a third whether it's major or minor; the Refine report lists it as “a sequence, up a step in the key”. A sequence that changes key part-way isn't found; link it yourself if you want it. Written repeat signs don't need any of this: music between them is written once and played twice.

The report. The Refine report has a Repeated music section listing each repeat found (“mm. 9–16 like mm. 1–8”, “mm. 3–4 like mm. 1–2 (up a whole step)”) and how many of the repeats' notes are as the first time. Untick one to let it go its own way; to link two passages it didn't find, type the measures of the repeat and the measure where the first statement starts, and press Link. Press Apply to regenerate with the change. Both are saved with the song.

Editing the first time through. Refine parts follows repeats too, so change a note the first time through (it locks), press Refine parts, and the repeat takes the change. A note you've locked in a repeat stays as you wrote it there.

Melody sections

The tune doesn't have to stay on one stave. The tenors can take it for a verse while the sopranos sing a descant or a harmony above, and a passage can have no tune at all — an introduction, a pad under a solo, a hummed background — with every voice singing the chords.

Selecting measures. Above the chord lane is a row of measure numbers. Click a number to select that measure on every stave (it's shaded across the score); Shift-click another, or drag along the numbers, to take in more. The Selected panel then shows Selected measures. Esc clears the selection, as does clicking a note.

Melody in. Choose the stave that has the tune in these measures, or None (chords only), and press Apply:

Where the tune changes stave, the ruler says so (“Tune: Tenor”, “Chords only”), with a coloured bar under the measures. The Melody sections list at the bottom of the panel gives each passage; click one to select it, or click × to put the tune back in the melody stave there (it's copied back too). Melody sections are saved with the song. The melody stave chosen in the Staves section is still the song's main tune: the one it has wherever no section says otherwise.

Generate parts over melody sections. Generate parts works through the song passage by passage: first everywhere the tune is in the melody stave, then each other tune stave, then the chords-only passages. Each passage is written as its own draft, with the measure either side, where the music is already settled, heard as it is. Then it goes back over every join between sections and writes the last measure before it and the first measure after it again, now with the music on both sides in place, so neither side is left to do all the joining. It keeps each of these only if the join comes out smoother (smaller leaps, no new parallels or crossed voices); the status line says how many it kept. The status line lists the sections it worked through. Repeated music is found within the passages that have the tune in the same stave (a tenor verse doesn't copy the parts of a soprano verse, since the voicing has to be different). Refine parts works the same way.

Generated notes are marked one by one. Before 2.35 a whole stave was either written by Generate parts or written by you. Now each note carries the mark, so one stave can hold the tune (your notes) in one passage and generated harmony in the rest. Generate parts rewrites only generated notes: a stave with notes of yours in a passage is heard there but left as it is. Songs from earlier versions are converted as they open.

Rewriting some measures

With measures selected, the Staves row in the panel lists every stave with a tick box. By default the staves Generate parts would write are ticked; the tune there is greyed out, and a stave with notes you wrote there is marked “written by hand” and left unticked. Then:

Rewrite uses the song's style, Added notes and Repeated music settings, and the refine pass if it's on; its results show in the Refine report like Generate parts'. Undo puts the measures back as they were.

Locking

Hand-edit any note on a generated stave — drag it, nudge it, change it in the inspector — and it locks automatically, and the next Generate parts keeps that note exactly as written while it rebuilds everything else around it. Unlock a note from its own inspector (click the lock), lock or unlock several selected notes at once with Lock selected / Unlock selected, use Lock all / Unlock all for a whole stave, or select measures and use Lock / Unlock in the Selected measures panel for every ticked stave in those measures.

Seeing what's locked. On the score, a small blue padlock with a dashed line runs over every stretch of locked notes on a stave (rests don't break the stretch). Hover it for the stave and the number of notes; click it to select those notes, which opens the Selected panel with Unlock selected ready. Select a single note and its inspector says 🔒 Locked or 🔓 Lock this note. Select measures and the Staves list in the Selected measures panel says, for each stave, all locked or 5 of 12 locked there. The Staves section shows Unlock all (n) on any stave that has locked notes. The lock marks never print; turn them off in Settings (Show locked notes) if you don't want them.

Seeing what was generated. Generated notes look like any other notes, so on a stave that mixes your notes with generated ones — the tenor with the tune for a verse and generated harmony elsewhere, a stave you wrote part of by hand and Rewrote the rest — a dotted cyan line with a small star runs over each stretch of notes Generate parts wrote (rests don't break it; a locked note does, since it has the padlock instead). Those are the notes the next Generate parts or Rewrite may write again; the unmarked ones are yours. Hover it for the stave and the count; click it to select those notes. Settings › Mark generated notes can put it on every stave (a stave that's all generated then gets one long line) or turn it off. It never prints.

Chord suggestions

When a melody note doesn't sit well in any reasonable voicing of the chord you've given it, Generate parts proposes a replacement chord at that beat instead of forcing an awkward harmony. Suggestions appear as small buttons next to Generate parts (for example, Beat 4: C → F♯7); click one to apply that chord and regenerate, or ignore it if the melody note was intentional.

12. Key, tempo and time changes

The header sets the song's opening key, tempo and time signature. To change any of them part-way through:

  1. Select a note (or a chord) anywhere in the measure where the change should happen.
  2. Open the Selected panel and find Key, tempo, time & rehearsal marks. It names the measure and shows the key and tempo in force there.
  3. Pick a new Key, type a new Tempo, and/or set a new Time signature — any combination — and press Apply at m. n.

Changes always start at the beginning of the measure. A change in the very first measure is refused with a pointer to the header, which owns the opening values. Choosing the key or tempo that is already in force removes the change instead of adding a redundant one. Below the controls, every change in the song is listed in order (“m. 9: Key → D major”), each with a ✕ to remove it; Remove all here clears every change at the selected measure.

13. Expressive marks

The Marks row, under the duration buttons in Note entry, adds the markings a choral score needs — and Harmonizer plays them, so you hear the ritardando, the held fermata and the hairpin while you arrange. Every button works on the selected note(s): click a note (or Shift-click a run of them), then click the mark. Press the same button again to take it off; Clear marks removes everything from the selection. The buttons light up to show what the selected note already has.

MarkHow to add itWhat playback does
Tempo word (Largo, Adagio, Andante, Moderato, Allegretto, Allegro, Vivace, Presto)Tempo ▾ with a note selected. On the first note it sets the opening word and tempo (the header's Tempo changes to match); later on, it's a tempo change with the word.Sets the word's usual metronome mark (Allegro ♩ = 132, and so on). Fine-tune the number in the header or in Key, tempo, time & rehearsal marks.
rit., rall., poco rit., molto rit., accel.Tempo ▾ with the notes it should cover selected. With a single note selected it runs to the end of that measure.Slows smoothly to about 70% (poco rit. 85%, molto rit. 55%) or speeds up to about 130% by the end, and stays there until the next tempo mark.
a tempo, Tempo ITempo ▾ on the note where the tempo comes back.a tempo returns to the tempo before the last rit./accel.; Tempo I returns to the opening tempo.
FermataThe fermata button (an arc with a dot), or press F. Works on rests too.Everyone holds that moment about 1.75× as long, then there's a short breath before going on — a fermata on any stave holds all of them.
Breath mark (,) and caesura (//)The two buttons after the fermata; the mark goes after the selected note.The note lets go on time and a short gap follows (a caesura's gap is a full beat).
Dynamics (pp, p, mp, mf, f, ff, sfz, fp)The mf ▾ menu; Remove dynamic takes one off.Sets the volume from there on (sfz is one note only; fp is loud, then soft). Until the first dynamic, a stave plays at its usual level.
Crescendo / diminuendo hairpinsThe < and > buttons, over a selected run of notes.The volume ramps to the dynamic just after the hairpin, or one step louder/softer if there isn't one.
Accent, staccato, tenuto, marcatoThe four articulation buttons.Accent and marcato are louder (marcato also a little detached); staccato is short; tenuto is full length and slightly leaned on.
SlurThe arc button, over two or more selected notes.— (shown and exported)
Rehearsal letterThe A button, with any note in the measure selected. Letters run A, B, C… in order and renumber themselves when you add or remove one; give one a name of its own (“Coda”, “Verse 2”) in Key, tempo, time & rehearsal marks.In the play window, Section jumps to it and Loop can repeat it (see Playback).
Text above the stave (“hum”, “solo”, “div.”, “legato”)Text… opens the Selected panel with its Text above box ready to type in. Works on rests too.—
Christus factus est with fermatas on every stave at a phrase end, rehearsal letters A and B, a crescendo hairpin into forte, and the Marks row above the score.
The Marks row above the score, and some of what it writes: a fermata on every voice (with All voices ticked), rehearsal letters, and a crescendo into f.

14. Repeats, endings, D.C. and D.S.

The Repeat ▾ menu in the Marks row works on whole measures — from the measure holding the first selected note to the one holding the last:

What playback does. Play follows the repeats and jumps in performance order, with the playhead going back where the music goes back. The usual conventions apply: after a D.C. or D.S. the repeats aren't taken again and the last ending is played, and a D.C./D.S. is taken once. The play window has a Repeats switch to play straight through as written instead. Loop always plays its passage as written. Save .wav, rehearsal tracks and Save .mid are performances too (following the Repeats switch); Save .musicxml writes the score as written, with its repeat barlines, endings and D.C./D.S. marks, and MusicXML import reads them back.

15. Playback, loop and practice speed

Press Play or Space. Sound comes from recorded samples across the full keyboard, so extreme high and low notes sound correctly rather than being clipped to a vocal range.

The play window during playback: the score full width, the current measure shaded and a playhead line, with the Hear buttons, Loop, Repeats, Section and Speed above.
The play window. The Hear buttons choose the voices; Loop, Repeats, Section and Speed sit underneath.

Loop

Loop (or L) in the play window repeats a passage until you stop it. Select one note to loop its measure, or select notes across several measures — on any stave — to loop all of them; with nothing selected it loops the whole song. The loop always covers whole measures, and the measures it will play (“Looping mm. 5–8”) are shown beside the button. Turn Loop off and playback stops at the end of the current pass. A loop plays its passage as written, without repeats or jumps.

Sections (rehearsal letters)

When the song has rehearsal letters, the play window shows a Section menu beside Loop. Pick a letter and the play position moves there (if the music is playing, it carries on from there). With Loop on and no note selected, Play repeats just that section, up to the next letter (“Looping section B (mm. 17–24)”) — the way a rehearsal actually runs. Selecting notes takes priority over the section, as before; ⏮/⏭ clear it.

Practice speed

The Speed slider in the play window slows playback down to 40% or speeds it up to 150% without changing pitch, and shows the resulting tempo (“80% · 77 bpm”). [ and ] nudge it by 5%. A new speed takes effect the next time Play starts, or on the next pass of a loop. It is remembered in this browser, applies to every song, and never changes the song's written tempo.

Saving the audio

Save → as .wav renders the whole song, start to finish, through the same sounds Play uses (the Sound setting included), with the staves and chords currently switched on, and downloads it as a standard, lossless .wav file. (There is no MP3 export: browsers don't include an MP3 encoder. Any audio program converts a .wav.)

16. Rehearsal tracks

Rehearsal tracks…, the last item in the Save ▾ menu, makes part-learning tracks for your singers: one audio file per voice, with that voice at full volume and the others underneath it. The dialog offers:

Press Make tracks (.zip). Each track is rendered in turn (progress is shown) and all of them download together in one .zip named after the song, with files like My-Song - Alto.wav (and … 80pct.wav for a slowed set). The tracks are performances: tempo changes, rit. and accel., fermatas, breaths and dynamics are followed, repeats and D.C./D.S. are played out (unless the play window's Repeats switch is off), and a stave's divisi notes are in that voice's track (use Split divisi first if Alto 1 and Alto 2 need a track each).

The Rehearsal tracks dialog with voice checkboxes, a full mix option, how loud the other voices are, speed, a left/right ear option and chord accompaniment.
The Rehearsal tracks dialog.

17. The score display and Settings

Notation details

Settings

The gear icon in the header opens Settings:

Black on white, Measure numbers, Show locked notes, Mark generated notes, Range warnings, the partwriting marks (and which kinds are ticked) and Refine after Generate parts are remembered in this browser across every song. The warning colours and marks never appear when you print.

18. Importing a MusicXML score

Press Open… and choose a MusicXML file — .musicxml, .xml, or a compressed .mxl from MuseScore, Finale, Sibelius or similar. It always opens as a new song, so nothing you have is overwritten.

If the file has more than one line of music, a dialog lists them so you can choose which becomes the melody (its lyrics and chords become the song's) and which others come in as further staves (up to eight in all). Vocal parts are ticked to start with; if nothing in the file looks vocal, every single-line part is. Keep each voice's own rhythm (on by default) keeps each voice's rhythm; untick it to have the other staves follow the melody's rhythm. Press Import, or Esc to cancel. The status line then reports what came across.

The Import report

After every import an Import report button appears in the status bar at the bottom. It opens a table of what the file held against what's now in the song, for the parts you brought in: notes, lyric syllables, dynamics, hairpins, slurs, fermatas, articulations, breath marks, words, rehearsal marks, tempo, meter and key changes, repeats, endings and chord symbols. Below it, Not brought across lists anything Harmonizer doesn't model: ornaments (trills, mordents, turns), tremolos, arpeggio signs, glissandos, other articulations, notes shorter than a sixteenth, double dots, tuplets other than triplets, verses past the sixth, C clefs, clef changes within a part, and chord-symbol extensions or slash basses. For MIDI it matches the file note for note (each key at each sixteenth), says how many notes sit on chord lines you didn't tick, and counts notes that had to be moved onto the sixteenth grid.

If anything came up short, or something in the file couldn't be brought across, the report opens by itself and the button turns amber. Otherwise it stays closed until you click the button. Notes are counted once per attack: tied notes count as one note, and each divisi head counts. It's the quickest way to check a file before you start arranging from it.

Parts with more than one line

A part that holds several lines is split so none of them is lost:

The import dialog for The Coolin: Soprano, Alto upper and lower, Tenor, Bass upper and lower, with the lower lines marked as divisi on their upper staves.
Importing The Coolin (a MIDI file): the lower Alto and Bass lines will come in as divisi on their upper staves, so the song opens on four staves.

What comes across

Notes, rests, lyrics (every verse, with hyphens and extenders), ties, chord symbols, the key, tempo and time signature, a pickup measure, and every key change, tempo change and time-signature change. Dynamics, hairpins, slurs, fermatas, articulations (accent, staccato, tenuto, marcato), breath marks and caesuras, and text directions (“hum”) come across on every stave that keeps its own rhythm (with Keep each voice's own rhythm unticked, only the melody keeps them), and you can edit them like any others. Rehearsal marks and tempo words come across too, and so do section headings written as text (“Verse 1”, “Chorus”, “Bridge”, “Chorus 4 Repeat”), which become named rehearsal marks, so they also show up in the play window's Section list. Tempo words include Allegro and the like, rit./rall./accel. (running to the end of their dashed line), a tempo and Tempo I. Grace notes are shown and exported but can't be edited. Each part's instrument name comes across as its stave's Instrument label. Tenor parts on the “8” treble clef are read as sounding an octave below written; a transposing instrument's part (clarinet in B♭, horn in F…) is brought to concert pitch, key signature and chord symbols included; and bass-range parts written in a treble clef are shown on a bass clef. Parts named for a voice (“Soprano”, “Piano, Alto”) get that part; unnamed ones (“Track 1”) get the usual choir layout for the number of staves, highest first.

What is simplified

Examples

The Examples ▾ menu, next to Open… in the header, lists the example arrangements that come with Harmonizer — choral pieces by Barber, Bruckner, Byrd and Morley. Pick one and it opens as a new song, through the same chooser as any other file, so you pick the melody and which voices to bring in. When Harmonizer starts with no music at all (a first visit, or a library of only empty songs), a welcome window offers the same list, along with Start with an empty song, Open a file… and the quick-start guide. Opening anything into an untitled, empty song replaces it rather than leaving a blank song behind in the Song menu.

Adding your own examples. The examples live in the data folder beside the app folder (projects/harmonizer/data/ on this site). Put a .mid, .mxl, .musicxml or .json file there and add a line for it to data/index.json, which lists each file with the title the menu shows. (Without an index.json, Harmonizer falls back to the web server's own folder listing, where the server allows one.)

19. Importing a MIDI file

Open… also reads MIDI files (.mid, .midi, .kar) and opens them as a new song through the same dialog:

20. Saving, songs, backup and export

Autosave

Every change is saved to this browser as you go; the status bar flashes “Autosaved”. Songs are stored per browser and per computer, so a different browser, a private window, or cleared site data will not have them — keep a backup (below).

If saving fails. A browser gives each site limited storage, typically about 5 MB. If Harmonizer can't save, an amber ⚠ Not saved in this browser warning appears in the status bar (saying “storage full” when that's the cause) and stays until a save succeeds. Your work is still on screen: export a backup straight away, then delete songs you no longer need.

Several songs

The Song dropdown switches between songs in progress. New starts another without touching the current one. The trash button deletes the current song (with confirmation).

Copying a song

Press Copy beside the Song menu to duplicate the current song as “… (copy)” and switch to it. Try a different key, chords, style or arrangement there; the original stays untouched.

Transposing a song

Transpose, beside Key, lists only keys of the same mode: other majors for a major song, other minors for a minor one. Each entry shows the shortest move, for example ↑5 or ↓2 semitones. Choosing one moves every note on every stave, every chord and every key change, and changes the key. Spellings follow the new key (a raised leading tone stays a sharp). To undo, press Undo or transpose back. Changing the plain Key menu, by contrast, only relabels the key.

Backing up every song

Settings → Song library backup shows how many songs are stored in this browser and roughly how much of its storage they use. Export library downloads every song as one file, harmonizer-library-YYYY-MM-DD.json. Import library… (or opening that file with Open…) adds its songs back — it never overwrites: songs you already have are skipped, and a song that has changed since the backup comes in as a separate copy. This is also how to move all your songs to another computer or browser.

Files

FormatUse it for
.json (song)Backing up one song, moving it to another computer, or reopening it in Harmonizer exactly as it was, generated harmony, style and changes included. Opening one adds it as a new song.
.json (library)A backup of every song in this browser (Settings → Export library).
.musicxmlFinishing the arrangement in notation software. Contains the melody and every stave with notes, divisi (as chords on one stem), lyrics (every verse, with hyphens and extenders), ties, chord symbols, key, time and tempo with all their changes, tempo words, rit./accel., dynamics, hairpins, fermatas, articulations, breath marks, slurs, text, rehearsal marks, repeats, endings and D.C./D.S. marks, grace notes carried in from an import, instrument labels, and title/composer. The tenor clef is exported as a treble clef with an octave change.
.midRehearsal apps, DAWs, and anything else that plays MIDI. One track per stave, named for its voice part, on its own channel with a General MIDI instrument from its Instrument label; a conductor track with the title, tempo, time and key signatures and all their changes; tied notes as single notes; divisi as a second note; lyrics (verse 1) as lyric events; dynamics, hairpins and accents as note velocities, staccato as shorter notes, and rit./accel. and fermatas as tempo changes. Repeats and D.C./D.S. are written out, as they're played. Chord symbols and the chord accompaniment are not included.
.wavThe audio of the whole song as you'd hear it on Play, repeats and all.
.zip of .wavRehearsal tracks, one per voice (see Rehearsal tracks).
Print / PDFThe score alone, through the browser's print dialog; choose “Save as PDF” there for a PDF. The score is laid out in lines (systems) across the page, broken at barlines — each line starts with its clef, the key signature in force there, the part names and a measure number — and runs onto as many pages as it needs, never splitting a line across two pages. The title, composer, key and time head the first page. Everything shown on screen prints (lyrics, chords, ties, dynamics, key and tempo changes); a tie or slur that crosses the end of a line is cut there. Portrait fits about three four-part lines per page; landscape gives longer lines. Range warnings, the partwriting, lock and generated-note marks never print.

21. Keyboard and mouse reference

ActionInput
Play / pause / resumeSpace
Undo / redoCtrl+Z / Ctrl+Y (or Ctrl+Shift+Z)
Add a noteClick the melody staff, or an Own rhythm stave
Select a noteClick or tap it
Extend selection over a rangeShift+click
Add/remove one note from selectionCtrl+click (Cmd on Mac)
Move selection along the stave← →
Nudge pitch one step↑ ↓
Nudge pitch by seven stepsShift+↑ / ↓
Move up/down one octaveCtrl+↑ / ↓
Swap pitches of two selected notesCtrl+X
Delete the selected noteDelete or Backspace
Re-pitch by draggingDrag a note up or down (mouse, pen or finger)
Add or select a chordClick the chord lane
Play window: page / jump← → / Home End
Fermata on the selected note(s)F
Start typing lyrics on the selected noteEnter
Lyric box: next / previous noteSpace or Tab / Shift+ either
Lyric box: next syllable of the word / hold the syllable- / _
Play window: loop on/offL
Play window: Sound (Per stave → Piano → Choir)V
Play window: speed −5% / +5%[ / ]
Close the play window or a dialogEsc

Keyboard shortcuts are ignored while you are typing in a text box, and editing keys are ignored while a dialog is open, so typing lyrics or melody text never moves notes.

22. What Harmonizer doesn't do

Harmonizer is for sketching vocal arrangements, not engraving a finished score. By design:

For anything beyond that, export MusicXML and carry on in a notation program.

23. Troubleshooting

SymptomCause and remedy
No soundWait a moment after the first Play while the sound loads (the piano, or a stave's other sound). Check the stave's Play box, Play chords, the Hear buttons, your device volume, and that the browser tab isn't muted. Some browsers need a click on the page before audio can start.
“Could not load the … sound — playing it on piano”That instrument's file (harmonizer-bank-choir-aah.json, -organ, -strings or -flute) isn't next to the app, or didn't download. Its staves play on the piano meanwhile. Check the files are uploaded alongside harmonizer-piano-samples.json.
Samples fail to load when running locallyBrowsers block a page opened by double-clicking (file://) from reading its neighbouring sample file. Serve the folder instead, for example python3 -m http.server, and open it via http://localhost.
“Generate parts” is missingIt needs at least two staves and at least one chord. Set Staves above 1, add chords, and open the Staves section.
Harmony staves went blankChanging the melody, chords, or a stave's Part or Clef clears harmony that would now be stale. Press Generate parts again.
Notes show unexpected naturals after a key changeA key change keeps existing pitches. If the passage should move into the new key, re-pitch those notes (or type them again in Melody text without accidentals).
Amber “Not saved in this browser” warningThe browser's storage for the site is full or blocked. Export a backup from Settings, then delete songs you don't need. The warning clears on the next successful save.
My songs have goneAutosave lives in the browser's site storage. A different browser or computer, a private window, or cleared site data starts empty. Restore from a library backup (Settings → Import library) or a .json song with Open….
A MIDI import has odd rhythmsMIDI stores timings, not notation; Harmonizer rounds them to sixteenths. Triplets and swung or freely played rhythms come out approximate. Export MusicXML from the program that made the MIDI file if you can.
An imported score looks simplifiedSee Importing a MusicXML score for exactly what is kept and simplified, and tick any extra voices or divisi lines you need in the import dialog.
The browser asks to allow several downloadsThat shouldn't happen for rehearsal tracks, which come as one .zip. If your browser blocks the .zip, allow downloads for the site.
Playback jumps back or skips measuresThat's the repeats, endings or a D.C./D.S. being followed. Untick Repeats in the play window to play straight through as written; Loop always does.
Combine with … refusesSomewhere the two staves have triplets that don't line up with the other line's notes, so they can't share a stem. The status line names the measures; change those triplets on one stave and try again.
The launcher shows an old versionThe launcher reads current.txt in the app folder to decide which version to open. Reload once; if that doesn't help, check that the file names the newest release.

24. What's new

3.0

2.43

2.42

2.41

2.40

2.39

2.38

2.37

2.36

2.35

2.34

2.33

2.32

2.31

2.28

2.27

2.26

2.25

2.24

2.23

2.22

2.21

2.19

2.18

2.17

2.16

2.15

2.14

2.13

2.12

2.11

2.10

2.9

2.8

2.5

Earlier

Clefs and accidentals use the Bravura font's glyph outlines (SMuFL, © Steinberg Media Technologies, SIL Open Font License 1.1). Piano samples: Salamander Grand Piano by Alexander Holm, CC BY 3.0. Choir, organ, strings and flute samples: GeneralUser GS by S. Christian Collins (schristiancollins.com).