PIANO ROLL

Chord Progression Tool

Chords are stacks of notes in the Piano roll that sound good when played together. If you place a series of different chords one after the other, then you have made a Chord Progression. Unfortunately, like notes, not all chords sound good in the same sequence and you have probably noticed that. That's where the Chord Progression Tool will help you quickly create 'musical' sounding chord progressions. The tool distills musical theory into a few clicks!

Chord progressions are important as they are the harmonic foundation that creates the overall emotional feel of your track. This is similar to how colors work to create emotions in a painting. The Chord Progression you choose will create an emotional journey for your listener. Some progressions will sound happy and positive, while others can sound dark and mysterious or you can even transition from one to the other and somewhere in between.

Chord progressions that work, aren't random. They often follow patterns based on musical scales. Understanding scales, covered in the Scales & Keys (Key Signatures) section of the manual, will help you to understand how the Chord Progression tool is working. You can set the scale as indicated from the Right-Click options.

Controls

Top Panel Options

  • Play button - Start and stop playback.
  • Solo - Only play the chord notes (i.e. not any pre-existing Piano roll notes).
  • Generate - Runs the main AI generative model on all existing chords. Any chord which are not locked (padlock icon) will be regenerated. The model takes into account overall harmonic coherence, chord-to-chord transitions, sub-sequences for long progressions, metric position, extensions and bass line.
  • Analyze - This runs a different AI analysis model which aims to find the best matching chord sequence for existing Piano roll notes. It is a deterministic model, so regenerating will have no effect while Piano roll notes remain the same.
  • Note - this option will only be available when there are already notes in the Piano roll before opening the Chord Progression Tool. Spanner icon (note options for generation).
  • Notes - This determines which parts of a chord will have notes created on generation or analysis. Note - if both of these are off, chords will be shown but no notes created. This could be used to analyse the chords on one channel and then the same chords could be used to create notes for a different instrument on another channel.
  • Main - Generate the main chord notes
  • Bass - Generate the bass notes for the chord
  • Tip - run Analyze with Bass notes only to create a bass line that matches existing Piano roll content.
  • Non chord notes - How the pre-existing Piano roll notes (i.e. before the tool was opened) will be treated
  • Replace all - remove all pre-existing notes (but for Analyze they will still be used for the analysis).
  • Replace clashing - remove any notes that lie within the region of generated chord notes. Those regions are determined by the Main and Bass options above.
  • Keep - keep existing Piano roll notes and furthermore instruct the AI model to aim to generate chords that will accompany those notes coherently.
  • Snap - keep existing Piano roll notes, but snap any which are outside of chord notes to the nearest in-chord note.
  • Tip - this can be used as a creative tool to match a static arpeggiated (or melodic) sequence to a chord progression.
  • Count - The number of chords in the progression. Use this to quickly add or remove chords from the end of the progression. Any added chords will be generated automatically.
  • Length - This determines the initial length of any chords added to the end of the progression. It also informs the AI model as to the length of a basic metric unit within the progression.
  • Rescale - When selected, altering the Length will also rescale all existing chords accordingly, relative to the change. Also, new performance patterns added will respect this new scaling value. When not selected, changing Length will change the length for new chords but will not alter current chords. Furthermore, the reference for performance patterns will not be changed. The AI models will still follow the new value of Length.

Chord Viewer

This is where you can manipulate the chord progression by moving, swapping, resizing, adding, removing and altering chords.

(Right-Click) Chord Options:

  • Preview - Chord Preview Options (Right-Click a chord).
  • Preview from this chord - Play the sequence from this chord onwards.
  • Lock (also accessible via the padlock icon) - When selected, this chord will not be regenerated when Generate or Analyze are hit.
  • Regenerate - Instruct the AI model to regenerate only this chord, taking into account any neighboring chords.
  • Show alternatives - Show a set of AI-generated alternative options for this chord that would fit well in the progression.
  • Add passing chord - Split this chord and in the first of the split positions regenerate to create a chord that leads on to this one.
  • Inversion - Also accessible via the arrows on the top right of the chord). Cycle the Main chord notes up or down by 1. The current inversion state is shown on the top right of the chord.
  • Transpose - shift this chord (Main or Bass part) up or down by a semitone or octave.
  • Main notes - Toggle the Main chord notes on or off.
  • Bass note - Toggle the bass note on or off.
  • Fixed bass - Here you can manually fix the bass note of a chord. It will be changed for the current chord, and when this chord is regenerated the chosen bass note will remain.
  • Extensions - Alter the number of extensions for this chord.
  • Color - Change the color of the chord notes.
  • Select chord - Manually select a different chord.
  • Type in chord name… - opens up a window to type in the name of a replacement chord.
  • Performance - add a performance to this chord (arprggiation or chop pattern).
  • Voicing - Alter how the chord’s notes are spread out
  • Block - notes will be compacted into a condensed voicing.
  • Open - notes will be more spread out so no two notes are too close together.
  • Octave - the lowest chord note will be repeated an octave above.
  • Stacked - chord notes will be repeated over 2 octaves. Hint - this can be used to cerate power chords.
  • Snap existing notes - Snap pre-existing Piano roll notes to note classes that are in this chord (similar to the generation option, but will not regenerate the chord).
  • Copy - copy this chord to the clipboard.
  • Paste - paste in a chord from the clipboard to replace this chord.
  • Delete - remove this chord.

On-Chord Controls

  • Zoom (magnifying glass) - Zoom in/out so all chords fit across the viewer.
  • Undo/redo - Undo or redo actions.
  • Names - Toggle chord names between absolute (standard letter names) and relative (scale-relative Roman numeral names).
  • Slide (arrow icon) - When selected, if you move a chord into an adjacent chord it will shunt that (and any others) across, rather than swapping places.
  • Snap - Set a snap resolution for chord movements.
  • Presets panel - Choose a 4-bar progression to be applied repeatedly. NOTE: - Repeating chunks occur in blocks of (4 x Length). Extra chords will be generated to complement the preset and where there are too few chord, some of the preset chords will be omitted.
  • Rhythm presets - apply a rhythm to the chord sequence in blocks of (4 x Length). Chords may be added if necessary, and extra chords in each block will split rhythm sections.

NOTE: - There's also a Random option that will use a generative AI model to create a chord rhythm.

Manual Panel

  • Type a progression - This will place a progression starting from the currently selected chord. You can type either a single chord or a full progression, separated by any commonly used separator for chord progressions (including spaces). If your progression has more chords in it than existing chords, new chords will be added to the end of the progression. NOTE: - Locked chords will not be changed. If multiple chords are selected, chords will be placed in these chords first, then any remaining entered chords will be placed in chords after the final selected chord.

Special Characters

  • = - Keep the current chord
  • . - Repeat the previous chord in the text (not the previous existing chord)
  • Valid separators - [|-, ]
  • Input from MIDI - Select this button and then play a chord on a MIDI device. The input will be analyses and will replace the currently selected chord.
  • Select chord - Manually alter the currently selected chord(s).

Generate Panel

  • Temperature - this controls the safeness / unusualness of the generated progression. If turned down, the progression will have more repeated chords and chords will stay close to the current scale, transitions will generally be very safe and expected. If turned up, chord progressions will become more unusual as the model gains an increasing license to explore less-common patterns. They will likely have more dissonances and unusual transitions, btu could generate some interesting results.
  • Diatonic depth - increase this to encourage chords (and extension notes) which use more in-scale notes.
  • Styles - Each style corresponds to a different set of AI settings that statistically match a given style. This affects the chords which the model views as the most likely in any given circumstance, as well as which extensions to apply. Moving the slider in between two styles interpolates between the statistical data structures supplied to the AI model.
  • Extensions - Add extra notes to chords. substitute / add - either replace basic chord notes with the alterations, or add them as extra notes
  • Probability - the slider position on the scale of 0 to 1 is the average number of extensions per chord
  • Max notes - The maximum number of notes that can be added to any given chord

Advanced Panel

  • Position depth - The degree to which the AI model takes into account the metric position of a chord. Metric position is defined as which unit this chord (mostly) sits in along a loop (sub-progression within the progression). A unit is an interval of time defined by the Length parameter at the top of the window. Value clockwise from 12:00 bias towards considering metric position, and values anticlockwise from 12:00 bias against what would be expected in a given metric position.
  • Loop depth - Consider a progression with n chords in it. From the perspective of the AI model, these chords are arranged along a timeline which has intervals governed by the Length setting. A loop is made up of the time interval (Units per cadence x Length). The AI will consider each loop as a sub-progression and this control tells it whether or not to try to make each sub-progression similar or different from the previous one. A position anticlockwise from 12:00 will encourage each sub-progression to be different from the previous, and a position clockwise from 12:00 will encourage consistent sub-progressions, giving the full progression the sense of having a repeating internal pattern of chords. Of course this parameter is only applicable if the chord sequence is long enough to have more than one loop (sub-progression).
  • Units per cadence - This is the number of time intervals of length Length which make up a loop (cadence / sub-progression). This defines the metric structure for the AI when generating or analysing chords. The AI will aim to resolve cadences at the end of each sub-progression.
  • Context length - Larger values allow the AI to place more importance on longer prior chord transition sequences when making its decision about which chord to select next. At a value of zero it will only look at the directly preceding chord.
  • Chord repeats - Higher values encourage more repeats from one chord to the next. A value of zero ensures two adjacent generated chords can never be exactly the same (unless subsequently altered!).
  • Notes per chord - This gives the number of notes (without extensions) that each newly generated chord will be given.
  • Wrap progression around - This tells the AI to consider the first chord in the progression when generating the final one, so it will try to make the progression loop back nicely with itself.
  • Fix seed - If selected, when you alter a parameter and regenerate the changes will be made incrementally. This actually defines discrete thresholds for changes in the generation output per parameter, so if you change a parameter just a little with this selected the generated sequence may remain the same.

Shortcuts

In Piano roll:

  • (Alt+P) - Open tool (might conflict with something else, please let me know if you find anything).

In the tool itself:

  • (Mousewheel) - Horizontal scroll.
  • (Ctrl+Mousewheel) - Horizontal zoom.
  • (Shift+Mousewheel) - Change hovered chord inversion.
  • (Alt+Mousewheel) - Tranpose hovered chord (wip, doesn't update chord name yet).
  • (Space) - Preview.
  • (BackSpace) - Switch snapping.
  • (Alt+S) - Switch 'slide chords' on/off.
  • (Shift+Z) - Zoom out.
  • (Ctrl+A) - Select all.
  • (Ctrl+D) - Deselect all.
  • (Ctrl+C/Ctrl+V) - Copy/paste.
  • (Ctrl+Z/Ctrl+Alt+Z) - Undo/redo.
  • (Ctrl+rightclick) - Zoom out full.
  • (Alt+click) - Preview chord.
  • (Shift+ double click) - Add passing chord.
  • (Ctrl+click and drag) - Select multiple chords.
  • (Double click on chord) - Show chord alternatives.
  • (Double click on empty space) - Create new chord.
  • (Shift during resizing) - Move next chord's starting point if it's touching current chord's end point.
  • (Alt during moving/resizing) - Ignore snap setting.

Chord Progressions and Harmony

We recommend watching the following video) -


Credits: Code (Tolly Collins, Pierre, Kyle Spratt, Dario Sanfilippo).