What it is
Cantus is a composition engine. You pick a musical world, it writes a passage in that idiom, and you shape and edit it by ear. Nothing here is a recording: every note is generated, every chord can be explained, and you can export the result as audio or MIDI. Playback runs through sampled instruments and a mastering chain, so what you hear and the audio you export sound full; the instrument each part uses comes from the preset.
Start here
Pick a preset from the menu at the top right, press Play, then reshape what you hear. space starts and stops. Edits are heard the moment you make them, so you can tune things while the passage loops. You can reopen this guide any time from the name at the top left or the ? next to it.
The top bar
Name / ?Open this guide.
pack badgeThe small word after the name shows the active idiom (the pack), for example bebop or collage.
preset menuA full starting point in one step: an idiom, a key and scale, a form, a tempo, instrument choices, and slider settings, all at once. The presets span jazz, classical, electronic, and song styles, grouped by genre, alongside studies named for particular composers and players. Changing a preset rewrites everything; from there you edit freely.
The three views
The tabs at the top left switch between three ways of working on the same passage. The Learn button at the far right of the same row is not a view; it opens the panel for composing from your own MIDI, covered in the next section.
Composer MapThe main editor. Chord cards across the middle show the progression (tap one to select it and open it in Inspect). The roll above shows the melody sitting over those chords. The velocity lane sets how hard each note is struck. The strip at the bottom traces harmonic tension, higher meaning more strain.
Harmonic OrbitPick any chord and see the substitutions that could stand in for it, arranged around it. Hover a satellite to hear it, tap it to swap it in. The chevrons step through the progression, and each option tells you how many notes it keeps from the chord you are on, so you can judge how smooth the swap will be.
Voice LoomEvery thread is a single voice followed across all the chords, so you can read the voice leading line by line. Drag any dot up or down to revoice that note; it snaps to a chord tone and stays between its neighbors. Rings mark the guide tones (the third and seventh) and red ticks flag parallel fifths or octaves.
Learn: composing from your own MIDI
Learn is how you compose in a style that is not built in. Hand Cantus a few MIDI files and it studies them, builds a small statistical model of how that music behaves, and then writes new passages in that style through the same engine that drives everything else, so the result is always voiced, phrased, and cadenced. It does not copy, quote, or stitch together the files you give it; it learns their tendencies and recombines them into music that is new every time.
Open it from the Learn button at the top right. Drop a handful of .mid files onto the panel, or choose them, and read the summary it returns: the files in the corpus, the notes read, the key it found, the tempo and meter, the number of melodic motifs, and the chromatic share. Adding more files builds on what is already loaded rather than replacing it, so you can grow the corpus a few files at a time; Clear empties it and starts over. When you are ready, press Generate and Cantus writes a passage in the learned style. From there it behaves like any other passage: reshape it, regenerate for a new take on the same model, and export it.
What it studies in the files, step by step:
ReadingEach file is parsed as a Standard MIDI File: note on and off pairs become timed notes, and the tempo and time signature are read from the file itself. Type 0 and Type 1 files both work.
Separating voicesNotes that begin together are grouped into onsets. In each onset the highest note is taken as the melody and the lowest as the bass, and any onset with two or more notes is recorded as a chord with its root and its set of pitch classes. Every note also adds its duration to a twelve-bin pitch-class histogram, so longer and more frequent pitches weigh more.
Finding the keyThat histogram is matched against the Krumhansl-Schmuckler major and minor profiles, correlated across all twelve rotations of each. The best match gives the tonal center and whether the music is major or minor, which sets the scale everything else is measured against.
Learning the melodyThe top line is broken into short phrases, and each phrase is reduced to a shape: its notes as scale-degree steps away from where the phrase began, paired with their durations on a half-beat grid. Shapes that recur are counted, and the most common become the motif cells the engine later develops. The line's feel is measured too: how often it runs in quick bursts, how much it leans off the beat, and how much of it sits outside the scale.
Learning the harmonyEach chord's quality, whether major, minor, dominant seventh, and so on, is read from its pitch classes, and the way one chord's root moves to the next is tallied into a first-order Markov model: a table of how likely each root motion is, learned from the actual progressions in the files.
To generate, Cantus walks that Markov model to lay out a new progression, starting on the tonic and choosing each next root by weighted chance from the learned motions, snapping anything off-scale back into the key. It closes with a dominant leading home so the phrase cadences, and it adds sevenths at roughly the rate it saw in your files. The melody is then written over those chords by the standard engine, driven by the learned motif cells and the learned feel, so it develops a real line rather than a random one.
The approach is statistical and recombinant, in the tradition of David Cope's Experiments in Musical Intelligence. It is not a neural network and not a collage: the model is small and legible, a key, a handful of melodic shapes, a sense of rhythm, and a table of harmonic motion, and the music is composed fresh from those ingredients by rules that guarantee voice leading and cadence. Learn works best on multi-track or clearly voiced MIDI, where the top line, the bass, and the chords are easy to tell apart; dense or heavily overlapping files give a vaguer model. The more representative the files, the truer the style.
Moving around the roll
The small buttons above the roll control zoom: time + and time - stretch or compress the horizontal scale, pitch + and pitch - do the same vertically, and fit frames the whole passage. You can also use the mouse wheel for pitch, shift and wheel for time, ctrl and wheel to zoom in time, alt and wheel to zoom in pitch, and the bar under the roll to scroll.
Editing notes on the roll
SnapThe snap menu above the roll sets the timing grid that notes you add, move, or resize land on, from a quarter note down to a thirty-second, including triplets. The grid lines on the roll follow it. This is separate from how the generated line is written.
AddTap an empty spot to drop a note, and keep holding and drag right to set its length as you write it. It lands on the snap grid.
RepitchDrag a note up or down. Its pitch follows the Pitch setting in the Melody panel: collection keeps it in the scale, chromatic allows any semitone.
ResizeDrag a note's right edge to change its length; it snaps to the same grid.
DeleteDouble tap a note, or right click it.
VelocityDrag the bar under a note in the velocity lane to set how hard it is struck. Drag across several bars to shape a phrase.
Compose panel
The world and the shape of the passage.
IdiomThe style family, also shown in the pack badge. It sets the vocabulary of chords, basslines, and grooves the engine draws from.
CenterThe tonal center, the key the passage is built around.
CollectionThe scale or mode in play (major, dorian, lydian, whole tone, octatonic, a Messiaen mode, and so on). It colors both the chords and where new notes land when Snap is set to collection.
FormThe overall plan, for example a blues, a turnaround, a vamp, or a set of blocks. Each idiom offers its own forms.
MeterThe time signature, including mixed meters that change bar to bar.
barsHow many bars the passage runs.
harmonic rhythmHow many chords land per bar, from one slow chord to several quick ones.
The four temperament sliders reshape the harmony as a whole:
RiskHow far the chords stray from the home key. Low is safe and diatonic, high brings tension and surprise.
ColorHow many extensions sit on top of each chord, from plain triads to lush ninths and thirteenths.
MotionHow much the harmony moves, from a near-static vamp to busy, constant change.
SpreadHow open or close the voicings are, from tight clusters to wide, airy spacing.
And the action buttons:
GenerateWrites a fresh take in the current settings.
MutateNudges a few chords without rewriting the whole passage.
UndoSteps back through your recent changes.
verbsSix one-tap moods, each touching only the chords that fit and respecting any you have locked: darker folds chords toward minor and shadowed dominants, brighter lifts them toward major and lydian color, jazzify adds sevenths and extensions to plain chords, stranger pushes chords a step outside the home scale (scaled by Risk), simpler strips extensions and opens clusters, and smoother swaps chords for neighbors that share more tones for easier voice leading.
Save branchKeeps the current passage as a named version. The menu beside it restores any branch you have saved, and Undo will still bring back what you had before.
Inspect panel
Tap a chord card, an orbit node, or a loom thread to open it here. You get its name and function, a short note on why it is there, and a list of alternates you can apply with one tap. It is the place to understand and fine tune a single chord.
Melody panel
DensityHow many notes the line plays, from sparse to busy.
RegisterThe center of the line's range, low to high.
LeapHow wide the intervals are, from stepwise motion to large jumps.
BreathHow much the line rests, from continuous to spacious.
PitchWhere the pitches of notes you write or move land: collection keeps them in the current scale, chromatic allows any semitone. For the timing grid that notes snap to, use the snap menu above the roll.
GridThe rhythmic grid the generated line is written on, 8ths or 16ths. A finer grid lets the engine place busier, more syncopated rhythms.
New motifWrites a brand new melodic idea.
RedevelopKeeps the same motif but reworks how it unfolds.
LockProtects your hand-drawn notes so Generate and edits keep them instead of overwriting.
ClearEmpties the line so you can write your own from scratch.
Analyze panel
Listen closeRuns a critique of the passage and lists what it hears, each finding linked to the spot it came from so you can jump straight there.
ProvenanceShows how much of the result is the engine and how much is your editing.
Transport
Play / StopStarts and stops. The playhead sweeps the roll as it plays.
bpm / swingTempo, and how far the offbeats lay back. Both change live while it plays.
HumanWhen on, every note gets a tiny, random shift in timing and loudness, like a player breathing, instead of dead-straight machine time. Turn it off for a rigid, programmed feel.
LoopWhen on, the passage repeats; when off, it plays once and stops.
M H B PQuick mutes for the melody, harmony, bass, or pulse (the drums). A struck-through letter is muted. The same mutes live in the mixer.
MixOpens the mixer: a volume fader, mute, and solo for each of the four parts. Faders move the level live as you drag (0 to 150 percent, 100 is unity). Solo isolates one or more parts; mute always wins over solo. Reset levels returns every fader to 100 percent and clears solo. The mix carries across regeneration and is baked into the WAV export.
outPlay through the built-in synth, or send live notes to a MIDI instrument or DAW. Choosing a device asks the browser for MIDI access; the internal synth steps aside while you feed a device.
WAV / MIDIRender the passage to an audio file, or export a five-track MIDI file (conductor, harmony, bass, melody, pulse).
Save / LoadSave the whole project to a file and load it back later.
MIDI output and channels
The live MIDI feed (out) and the exported MIDI file use the same layout. The file is a Format 1 SMF with five tracks, and each part sits on a fixed channel. Channels are written below the way a DAW shows them, 1 to 16.
ConductorNo channel. This track carries only the tempo and time-signature changes, so it sends no notes.
HarmonyChannel 1
BassChannel 2
MelodyChannel 3
Pulse (drums)Channel 10, the General MIDI percussion channel.
Each of the three pitched parts also sends a Program Change at the start that selects the General MIDI patch matching the sound you chose for it, so the harmony, bass, and melody timbres carry through. The drum part addresses standard channel-10 percussion keys rather than a patch. Because the drums are fixed to channel 10, any instrument you feed will treat that channel as percussion; the other three are ordinary melodic channels you can reassign freely on the receiving end.
Live and background
Changes are audible the moment you make them, with no need to stop and restart. Playback also keeps going when you switch to another tab or leave the window, so a loop can run while you work elsewhere.
Keyboard
space play or stop G generate M mutate Z undo Esc close this guide.
Note
Sending live MIDI to other apps needs a Chromium-based browser such as Chrome or Edge. The built-in sounds are synthesized sketches; the MIDI export is the path to your own instruments. Some browsers may pause a hidden tab's audio to save power, so background playback is most reliable on desktop Chrome, Edge, or Firefox.