One engine for the whole chant.
Gregorian chant software has always made you choose. Tools that engrave beautifully can’t make a sound. Tools that play can’t print. Web previews quietly disagree with the PDF they hand you. Every one of them reads GABC its own way — and every disagreement becomes your problem.
Cantus ends the choosing. It reads a chant once, into one model, and projects that single reading everywhere: square notation on screen, book-grade vector PDF in print, MusicXML and MEI for interchange, and — the part nothing else has — a living performance: synth or SoundFont voices, syllable-synced highlighting, and phrasing shaped by real schools of interpretation. The preview can’t drift from the print, and the sound can’t drift from the score, because there is nothing to drift between.
Notation is sacred. Interpretation is data.
The core design rule: engraving and export never see an interpretation — only time and loudness do. The score you print is exactly what the manuscript says; how it is sung is a profile you choose, or write yourself.
Interpretations are plain data — timing tables and dynamic doctrine. The tutorial’s theory tables are generated from the profiles, so what we teach, what we play, and what the code does cannot disagree.
Every workbench, one parse.
♦Engrave
Square notation with authentic neumes — podatus to torculus resupinus flexus — plus modern staff notation from the same reading. Total-fit line breaking and elastic spacing tuned for books and screens alike.
♦Sing
Live WebAudio playback through synth guide tones or real sampled choirs — Florestan, KBH Real Choir, Saint James — loaded and played in the page. Offline WAV and MIDI render from the same timing, so what you hear live is what you write to disk.
♦Interpret
Solesmes, equalist, and mensural schools built in as data, not code — and custom profiles as simple JSON. Change the school; the whole performance follows, down to the chironomy curve.
The page is one artifact: titles, rubrics, paper, margins, and notation composed as a single SVG. What the screen mounts is literally what the vector PDF (subsetted fonts, book-grade) exports.
♦Exchange
GABC in and out, of course — but also MEI with a verified round-trip, MusicXML, MIDI, and Volpiano import. The only chant renderer that speaks the scholarly interchange formats at all.
♦Study & edit
A live editor that is a pure GUI over the engine’s API, click-to-note sync, syllable highlighting during playback, and a full catalog with provenance tracked back to source — every chant knows where it came from.
Trust, mechanically earned.
Every chant engraver claims fidelity. Cantus is the only one that proves it — against Gregorio itself, the engine behind the Church’s modern chant books, using Gregorio’s own parser as the referee. Not eyeballed. Not sampled. Machine-checked, corpus-wide, re-runnable in minutes.
- 796 of 796 corpus chants parse note-for-note identical to
gregorio -F dump— every pitch, every sung note, no exceptions. - 2,397 conformance runs (full catalog × three interpretation schools): zero orphan notes, sync tags on true onsets, no dark playback moments, monotonic highlighting.
- Golden snapshots of every bug class ever fixed — each one a permanent regression test, not a memory.
- Prebuilt equals live. Server-rendered assets and the in-browser render are the same code with the same metrics — stamped, versioned, drift-detected.
The first JavaScript engraver with machine-verified Gregorio parity — and the only chant engine of any kind with a true performance layer.
How it beats everything else.
The alternatives each solve a slice. Gregorio engraves beautifully — through a TeX toolchain, with no sound and no browser. Exsurge drew in the browser and went quiet years ago. Web editors preview with one engine and print with another, hoping they agree. Scholarly tools speak MEI but not GABC. Cantus is the only complete instrument.
| Capability | Cantus | Gregorio | exsurge | jgabc / S&S | Neon + Verovio |
|---|---|---|---|---|---|
| Runs in-browser and server-side (same code) | ✓ both | server only | browser only | server / SaaS | ✓ |
| Verified against Gregorio, corpus-wide | ✓ 796/796 | is Gregorio | ✗ | ✗ | n/a |
| One engine for preview and print | ✓ | print only | ✗ | ✗ two engines | MEI only |
| Plays the chant (live + offline) | ✓ | ✗ | ✗ | basic | ✗ |
| Interpretation schools as data | ✓ | ✗ | ✗ | ✗ | ✗ |
| Syllable-synced highlight & chironomy | ✓ | ✗ | ✗ | ✗ | ✗ |
| Vector PDF, book-grade | ✓ | ✓ | ✗ | via Gregorio | ~ |
| MEI / MusicXML / MIDI / Volpiano interchange | ✓ | ✗ | ✗ | ✗ | MEI native |
| Modern staff notation from the same parse | ✓ | ✗ | ✗ | ✓ | ✗ |
| Embeddable library you can ship | ✓ | ✗ | ✓ | ~ | ✓ |
| Actively developed | ✓ | ✓ | dormant | SaaS | ✓ |
✓ yes · ~ partial · ✗ no. Full technical comparison with sources and honest limits in design/chant-library-landscape.md.
Eight hundred chants, with receipts.
The engine ships alongside a curated library of nearly 800 chants — ordinaries, propers, hymns, tones — each with provenance to its source edition, synced against the world’s largest open chant database, and guarded: where upstream data is broken, we repair it, prove the repair against Gregorio, and pin it so no automated update can ever quietly regress it. The library gets better and stays better.