CantusCN-2
bebop
zoom snap wheel scrolls pitch · shift wheel scrolls time · ctrl wheel zooms · drag the bar below
composer map :: tap empty space to add a note, drag right to set its length, drag to repitch, drag the right edge to resize, double tap to delete
velocity :: drag a bar to set how hard that note is struck
tension
harmonic orbit :: chevrons walk the progression, hover a satellite to hear it, tap to recast the center chord
voice loom :: each thread is one voice across the changes, drag a dot up or down to revoice that note
field :: the baked process layer across the whole passage, marks colored by voice, cursor sweeps as it plays. Shape it in the Process panel; its fader, mute, and solo are in the Mix panel
zoom ACCENT :: tap adds and steps loudness, drag paints
drum room :: each row is a drum voice, each column a sixteenth, the cursor sweeps as it plays. Zoom in time with the toolbar or ctrl-wheel, scroll with the wheel or the bar below. The kit and its FX live in the Drums panel; its fader, mute, and solo are in the Mix panel

Reverb

A send space for the whole instrument. Turn Send up to set the kit and the composition in a room.

0%
55

Delay

0%
35%
3.2 kHz

Sidechain

The kick ducks everything else, so the mix breathes against the beat.

0%
120 ms

Scenes

Capture the current pattern into a pad. Tap a filled pad to load it back. Build up to eight, then arrange them below.

Song

World

Temperament

40
55
50
45

Act

Keys: space plays, G generates, M mutates, Z undoes.

Chord

Tap a chord card, an orbit node, or a loom thread.

Line

55
C5
40
35
Editing on the roll: tap empty space to add a note and drag right to set its length, drag a note to repitch, drag its right edge to resize, double tap to delete, and drag the velocity lane to set loudness.

Critique

Grounded findings about the current passage. Tap one to jump to it.

Provenance

Break

The break engine writes the rhythm: pick a style, roll the dice, and reshape with chaos and ornament. Generate also sits on the Drum Room toolbar.

40
85
50

Kit

The rhythm voices, played through the break engine. These faders trim each voice into the FX; the drum master, mute, and solo are on the Mix panel. Program the beat in the Drum Room.

100
100
100
100
100
100
100
100
100

Comb

0%
22 ms
50%

Bitcrush

0%
14 bit
/1

Drive

0%
1
16.0kHz

FX start bypassed (every Mix at zero), so the kit stays clean until you dial them in. The bitcrush is not yet captured in WAV export; that arrives with the unified render.

bpm160 swing62 out
Mixer

A level meter, fader, pan, mute, and solo for each of the five parts, with the live MIDI channel shown beside each name. Volume and pan ride live as you drag; mute and solo apply within a beat. These settings carry across regeneration and are baked into the WAV export.

Learn from MIDI

Drop a handful of .mid files here, or choose them. Cantus reads each file, finds the key, and learns a probability model of the melody, rhythm, and chord motion, then writes new music in that style through the same engine, so the result stays voiced, phrased, and cadenced. Adding more files builds on the corpus; Clear empties it and starts over. This is statistical and recombinant, in the spirit of David Cope's Experiments in Musical Intelligence, not a neural net. It works best on multi-track or clearly voiced MIDI.

Drop .mid files here
or
Cantus CN-2 guide

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 views, and how they pair with the panels

The tabs at the top left switch between five ways of looking at the same passage: Composer Map, Harmonic Orbit, Voice Loom, Field, and Drum Room. The Learn tab sits right beside them and is highlighted because it is the way you teach Cantus a new style; it is not a view but a panel, opened from that tab and covered in the next section.

The panels and views are linked so the thing you are shaping stays on screen. The four panels that work on the score, Compose, Inspect, Melody, and Analyze, all open over the Composer Map, since that is where the chords and the line are: pick a panel and the map comes forward. Process opens the Field, which is its own workspace, and the two move together. Harmonic Orbit and Voice Loom are alternate lenses on the same music; switch to them from their tabs whenever you want, and they keep whatever panel you are using. Beyond the score, three production panels handle the groove and the arrangement: Drums opens the Drum Room, since that is where the pattern is, while Space and Arrange are workspaces of their own that leave the current view in place.

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.
FieldThe algorithmic Process layer laid out across the whole passage, every mark colored by the voice that made it, with the playhead sweeping as it plays. It is the picture of what the Process panel generates, so shape it there. Field and Process are paired: opening either one opens the other.
Drum RoomA step grid for the drum part, one row per voice and one column per sixteenth across the passage, with the playhead sweeping as it plays. It is a live picture of the groove: whatever the break generator writes and whatever you draw by hand live here. Building the drums has its own section below; the kit and its sound are set in the Drums panel.

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

Run critiqueRuns 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.

Process panel and the Field view

Process is a generative layer that sits alongside the composed parts. Each voice in it is a small algorithm that writes notes on its own, and the whole layer bakes into the passage: it plays through the same sampler and mastering chain, loops, and is exported to WAV and to MIDI as an extra part on channel 4. Its fader, mute, and solo live in the Mix panel, and there is a quick mute (P) in the transport. The Field view is its picture across the whole passage.

One rule holds the layer together musically: every note it generates is locked to the harmony. As the passage moves through its chords, each voice maps its output onto the tones of whatever chord is sounding at that moment, so the algorithms always agree with the progression rather than floating in a fixed scale.

The visualizerThe panel opens with a live picture of the voice you are editing docked at the top, labeled and colored to match it. It stays in view as you scroll, and it redraws the instant you move any control, so you see the shape change as you change it. Each voice in the list also carries a small spark of its own pattern.
MacrosSix knobs reshape the whole field at once. Density sets how much the layer plays, entropy how unpredictable it is, register its center pitch, and drive how long and pushed the notes feel. Brightness and space are live: brightness opens a filter on the layer and space sends it to reverb, both heard immediately without rewriting the notes.
VoicesLayer several engines together. Tap a voice to edit it; the M and S chips mute and solo it within the layer; the x removes it. Each voice has a color, used for its dot, its spark, and its marks in the Field view.
The six enginesEuclid spreads a number of onsets as evenly as possible across the bar (the Euclidean rhythm) and arpeggiates the chord through them. Automata runs a one-dimensional cellular automaton whose living cells fire notes. L-system grows a Lindenmayer string and reads its turtle path as a rising and falling contour. Markov walks a chain of pitch moves, either built in or learned from your own melody. Stochastic places notes by probability distributions in the Xenakis tradition, over a scale or a sieve. Geometry traces a parametric figure, a Lissajous curve, a rose, a logistic map, a random walk, or a sum of sines, and reads its height as pitch.
Editing a voiceEach engine shows its own parameters below the visualizer; the engine menu swaps the engine, and the instrument menu sets its sound. Drag a parameter and watch the docked figure morph in real time.
Reseed fieldDraws a fresh random realization of the whole layer from the current settings, while keeping the engines, parameters, and the harmony lock in place.

Drum Room: building the groove

The drum part is a step pattern you can generate, paint, and shape hit by hit. The Drum Room view shows it as a grid, one row per voice and one column per sixteenth across the passage; the Drums panel holds the kit and its sound. It plays through the same chain as everything else, follows tempo and swing, loops, mutes from the transport (D) and the mixer, and exports on the General MIDI percussion channel.

Generate breakWrites a fresh pattern in the Drums-panel style and fills the grid. Run it again, or use re-roll, for another take, then edit by hand.
PaintDrag across the grid to write hits. Start on an empty cell and the drag lays down a run; start on a filled cell and it erases as you go. Painting works in every edit mode, so you never switch modes just to add or clear notes.
Edit modesThe row of buttons, accent, chance, roll, and pitch, sets what a single tap on a hit does. Tapping a mode shows a one-line reminder of it, and every edit flashes a readout and is heard at once. The last three shape a hit that already exists; to place hits, paint or use accent.
accentTap a cell to place a hit, then tap again to step its loudness up and finally off. This is also how you remove a single hit.
chanceTap a hit to thin it, cycling 75, 50, and 25 percent, then back to certain. A thinned hit fires only some passes, so the pattern breathes and varies as it loops.
rollTap a hit to retrigger it as a fast roll of two, three, or four, then back to one. The cell splits into that many segments and you hear the roll as you set it.
pitchTap a hit to step its tuning, cycling up a few intervals and then down, then back to natural. The cell rides up or down and prints the offset, so a tom can walk across a fill. Tuning moves the pitched voices (kick, snare, tom, perc); the hats and cymbals ignore it.
clearEmpties the grid so you can build a pattern from nothing.
VelocityThe lane under the grid sets how hard each hit is struck, like the one under the Composer Map. Click a voice name in the left column to aim the lane at that voice, then drag its bars up or down, or across several to shape a phrase. This is the fine control; accent steps loudness in coarse jumps.

Drums panel: the kit and its sound

Where the groove is written and the kit is voiced. The Break controls write the pattern, the Kit faders balance the voices, and three effects color the whole drum bus.

StyleThe break idiom the generator draws from, for example jungle. It sets the feel of what Generate break writes.
ChaosHow far the generator strays from a straight pattern, from tight and regular to broken and surprising.
OrnamentHow many ghost notes and fills decorate the pattern, from plain to busy.
PolymeterHow much the voices pull against the main meter, layering cycles of different lengths for cross-rhythm.
SeedFix the seed for a pattern you can reproduce, or leave it random for a new one each time.
generate break / re-rollGenerate break writes a pattern in the current settings; re-roll draws another from the same settings. Both fill the grid in the Drum Room.
Kit fadersA level for each voice, kick, snare, clap, closed and open hat, ride, rim, tom, and perc, so you can balance the kit.
CombA short tuned delay that adds a metallic, pitched ring. Mix blends it in, Time sets the pitch, Feedback its length.
BitcrushLo-fi degradation. Mix blends it in, Bits lowers the bit depth, and Downsample drops the sample rate for a grittier sound.
DriveSaturation on the drum bus. Mix blends it in, Amount sets how hard it pushes, and Tone sets the brightness.

Space panel: send effects

Three sends fed from the full mix, so they color the whole instrument, the kit included. Everything starts at zero send, so nothing touches the sound until you reach for it, and the settings are baked into the WAV export.

ReverbAn ambience that places the parts in a room. Send sets how much is heard, Size how large and long the space is.
DelayA tempo-synced stereo echo. Send sets how much is heard, Time picks the note value it repeats on, from a sixteenth up to two beats, Feedback how many repeats, and Tone darkens the tail as it fades.
SidechainA pumping duck driven by the kick: each kick briefly dips the melody, harmony, bass, and process layers, the familiar dance-music breathing. Depth sets how deep the dip goes and Release how fast it recovers. The drums pass through un-ducked, so the beat stays solid while everything around it breathes.

Arrange panel: scenes and the song

Arrange turns one looping passage into an arrangement: capture moments as scenes, then chain them into a song.

ScenesEight pads, each a snapshot of the current pattern. Tap an empty pad to capture what you have; tap a filled pad to recall it. Scenes share the tempo and the process layer, so they vary the chords, the line, and the groove while staying one piece.
SongA chain of scenes that plays in order. Add step appends the active scene, each step repeats a number of times shown as x2 or x3 that you can raise or lower, and Clear chain empties it.
Play the chainThe toggle switches playback from the single loop to the whole song chain, so you hear the arrangement end to end. Off, it loops the current pattern as usual.

Motion panel: modulators

Modulators move a control on their own while the music plays, locked to tempo, so the sound breathes and shifts without you touching anything. They make no sound of their own and trigger nothing; each one takes a shape and a rate and aims it at one target, moving what is already there. Two are provided, A and B, and they save with the project.

RouteTurns the modulator on, and the menu beside it picks the target: filter brightness (a sweep across the whole mix), the reverb send or the delay send (so the space swells and recedes), or the sidechain depth (how hard the kick pumps everything). Off leaves it idle.
ShapeThe motion: a smooth sine, a triangle, a ramp up or down, a square that jumps between two values, or random that holds a fresh value each cycle.
RateHow fast it moves, synced to the beat from a slow four bars per cycle down to a sixteenth, so the motion always lands in time.
DepthHow far it pushes the target, from a hint to the full range. The lane above each modulator draws its shape, and a dot rides along it as it plays so you see the motion as you hear it.

Transport

Play / StopStarts and stops. The playhead sweeps the roll as it plays.
PlayheadThe bar at the top of the transport is the playhead across the whole passage. Click or drag it to move where you are: while playing it jumps there and keeps going, so you can audition any section without waiting out the loop; while stopped it sets where Play will begin. Stopping leaves the playhead where it was, so Play picks up from there.
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 D PQuick mutes for melody, harmony, bass, drums, and process. A struck-through letter is muted, and the same mutes live in the mixer. Hovering one shows the MIDI channel that part feeds.
MixOpens the mixer: a live level meter, a volume fader, a pan control, mute, and solo for each of the five parts, with the live MIDI channel shown beside each name. Faders move the level live as you drag (0 to 150 percent, 100 is unity). The pan slider places each part across the stereo field, reading C at center and L or R as you move it. Solo isolates one or more parts; mute always wins over solo. Reset levels returns every fader to 100 percent, recenters every pan, and clears mute and 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 multi-track MIDI file: a conductor track plus melody, harmony, bass, drums, and process (when present).
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, so what you route live is what you get on export. The file is a Format 1 SMF, with a conductor track plus one track per sounding part, and each part sits on a fixed channel. The same channels are shown beside the names in the Mix panel and on the transport mutes. 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.
MelodyChannel 1
HarmonyChannel 2
BassChannel 3
ProcessChannel 4, the generative layer.
DrumsChannel 10, the General MIDI percussion channel.

Melody, harmony, and bass each send a Program Change at the start that selects the General MIDI patch matching the sound you chose, so those timbres carry through. The drum part addresses standard channel-10 percussion keys rather than a patch, so any instrument you feed treats channel 10 as percussion; the melodic channels you can reassign freely on the receiving end. The process layer goes out on channel 4 for you to point at whatever instrument you like.

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.