PIANO ROLL

Chord Progression Tool

Chord Progressions are important because they are the harmonic foundation for the emotions evoked by your music. Just like colors inspire feelings about a painting, the sequence of Chords creates an emotional journey. Individual Chords might have their own character, but their combination, the Chord Progression, paints an emotional landscape. Some Progressions feel bright and joyful, while others evoke feelings of darkness and mystery. By weaving between these, composers can create a variety of moods.

What are Chords, these building blocks of emotion? At first glance Chords are stacks of notes that play well together. However, something special happens when the right notes combine in the right sequence of Chords. For beginners, finding these 'harmonious' combinations by trial-and-error can be frustrating. The Chord Progression helps by always giving you valid Chords in the right sequence to create an emotion. It's musical theory condensed into a few mouse clicks. See 'Tips on using the tool' below to get started.

Chord Progressions that sound good, are not 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 better follow how the Chord Progression tool works. NOTE: You can set the note Scale as indicated from the (Right-Click) options for Key & Scale as indicated in the image above.

Tips on using the tool

First thing, Chord Progressions work best with sustained sounds like a Piano or 'Pad' style synth. The instrument used must be polyphonic, set to play more than one note at a time. You can always change the sound later. Then ...

  1. The first Progression - When you open the tool you will get a 4 Chord Progression. Press Play to hear it or (Alt/cmd+Right-Click) click on Chords to preview them in any order. NOTE: FL Studio will also switch to Pattern mode if not already set. The Chord Progression Tool requires this to work correctly.
  2. Tweaking the results - Familiarize yourself with the options...
    • Click re-Generate if you don't like what you hear. NOTE: The tool will keep track of any notes already in the Piano roll of the Pattern you are working with and its own previous suggestions. Switch to the 'Dice' icon to start over if you feel stuck in a rut with the suggested Chords.
    • Use the 'Conventional - Adventurous' slider to make changes to the type of Progression you get. Conventional will be more commonly used in popular music while Adventurous will lean into Jazz style Chords with complex textures. NOTE: When set to the extreme 'Adventurous' end, you won't get Progressions commonly heard on in popular music. Adventurous does what it says :)
    • You can change Chords individually by clicking the 'Show alternative Chords' (down arrow) at the bottom of Chord and selecting an alternative from the pop-up list. Again use (Alt/cmd+Right-Click) to preview the options.
    • To reorder Chords, (Right-Click) and use the Swap option to create a different sequence.
    • Click the Lock icon to keep Chords you don't want replaced with Generate.
  3. Advanced controls - (Right-Click) a Chord for more options, check them out below. To change the Tonic note and Scale (Right-Click) the Tab above the first Chord in the sequence. Major Scales will tend to sound happier and more up-beat than minor Scales.
  4. Moving on - Click 'Accept' and the Progression will be added to the selected Pattern. Build on this to create a full track in the Playlist. TIP: One of the quickest ways to build a great melody is to use notes from the existing Chords in each bar. Even a random entry of notes from this set will work. Give it a try, then refine. Bass lines similarly may start as simply as the lowest note in each Chord with a rhythm you like.

NOTE: When you use the tool it will snap your Piano roll to a key. This will ensure notes you add later are in harmony with the Chord Progression provided if you select Snap to Key.

Controls

Top Panel Options

  • Play button - Start and stop playback. Use (Alt/cmd+Right-Click) to preview Chords with the mouse.
  • Solo - Only play the Chord notes (i.e. not any pre-existing Piano roll notes).
  • Spanner icon (note options for generation):
    • Notes - This determines which parts of a Chord will have notes created on generation or analysis. If both options are deselected, 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 the Analyze Generation Mode 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, existing before the tool was opened, will be treated.
      • Replace all - Remove pre-existing notes. Analyze mode will still use these pre-existing notes 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 - Keeps existing Piano roll notes and instructs the model to generate Chords that will accompany those notes harmonically or at least coherently. You be the judge :)
      • Snap - Keeps existing Piano roll notes, but snaps 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.
  • Generate - Runs the generative chord model according to the settings (icons) right. Any Chords 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 lines.
    • Rework (Arrows icon) - Takes into account any previous Chords generated and any notes, and Key Signature, already in the Piano roll when the tool was opened. This will also keep the Key from the first chord or the analysis.
    • Start over (Dice icon) - Starts fresh. Similar to the Reset button it will remove any changes to the Chords themselves and create a new Progression. However, global parameters such as generation parameters, Chord Count, Octave and Length are preserved. The Scale will also be randomized between Generations.
    • Analyze - The model will aim to find a matching chord sequence for existing notes in the Piano roll. Being non-deterministic, it will give slight variations on the Progression. NOTE: This option will only be available when there are already notes in the Piano roll before opening the Chord Progression Tool. TIP: This mode works best when used to auto-accompany existing notes. For example, if you have a melody in the Piano roll, choose a Scale you are happy with, then Analyze to Generate a Progression to accompany the melody.
  • 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.
  • Octave - Set which octave the Chords are placed on.
    • Transpose button (vertical double arrow icon) - When selected, changing the octave will transpose existing Chords. If deselected, change will only apply to newly added Chords (or to new Chords created with the Dice Generation mode).
  • 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 button (horizontal double arrow icon) - When selected, a change in Length will affect existing Chords relative to their starting length. When deselected, the length change will only apply to newly added Chords (or to new Chords created with the Dice Generation mode).
  • Conventional-Adventurous slider - Move left to create more 'common' Progressions with fewer added/altered notes. There will be a higher proportion of on-scale notes and more consonance. Move the slider to the right for a higher chance of getting more unusual or experimental Progressions, which may include more added notes, more out-or-scale notes and less expected transitions.TIP: Move the slider all the way right when you’re composing the soundtrack for a caffeinated squirrel’s adventure.

Chord Viewer

This is where you can manipulate the Chord Progression by moving, swapping, resizing, adding, removing and altering Chords.

  • Preview a Chord - (Alt/cmd+Right-Click) plays the Chord. This is a good way to quickly experiment with different ordering.
  • (Right-Click) Chord Options:
    • Preview - Play the Chord.
    • Preview from this chord - Play the Progression 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.
    • Main notes - Toggle the Main Chord notes on or off.
    • Bass note - Toggle the bass note on or off.
    • 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.
    • Select chord - Manually select a different Chord.
    • Type in chord name… - Opens up a window to type in the name of a replacement Chord.
    • Invert - 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.
    • 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.
    • Extra notes - Alter the number of note extensions for this Chord.
    • 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. TIP: This can be used to create 'power chords', particularly when the number of extensions is turned down.
    • Color - Change the color of the Chord notes.
    • 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).
    • Note linking - Choose ...
      • Link - Non-Chord Piano roll notes (i.e. ones that existed before you opened the Tool) will be swapped in for Chord notes for the duration of this Chord. TIP: This is how you can take in a pre-written Pattern from Piano roll notes and copy & paste it to other Chords using the Performance panel.
      • Unlink - Detach all currently rendered notes from the Chord and place in the Piano roll as non-Chord notes. You are now free to bring back Chord notes and manipulate this Chord independently of the notes you unlinked.
    • Copy - copy this Chord to the clipboard.
    • Paste - Paste in a Chord from the clipboard to replace this Chord.
    • Swap with - Swap this Chord with the one to its left or right.
    • Delete - Remove the Chord.

On-Chord Controls

  • Zoom (magnifying glass) - Zoom in/out so all Chords fit across the viewer.
  • Undo/redo - Undo or redo actions. TIP: Changes made inside the tool are saved in the general Progression history. You can use this to transfer changes made in one Channel/Pattern to another. If you have the same Progression in 2 different Channels, make and 'Accept' the change in one Channel, then open the Tool in the other Channel, go back one position in Progression history and Accept the changes on the new Channel.
  • Names - Toggle Chord names between absolute (standard letter names) and relative (scale-relative Roman numeral names).
  • Snap - Set a snap resolution for Chord movements.

Presets

  • Progression - Choose Progressions from a preset list. This list has been curated from a range of popular Progressions. NOTE: A 4-Chord preset will be applied over repeating metric time intervals if you have more or fewer than 4 Chords present. Repeating chunks occur in blocks of (4 x Length). Extra chords will be generated to complement the preset and where there are too few chords available, some of the preset Chords will be omitted.
    • Random (Dice icon) - Randomly apply one of the Progression presets.
    • Save (Disk icon) - This will open a dialog to name a new User Progression preset from your existing Chord sequence.
    • Delete (X icon) - If you have a User Chord Progression preset selected, this will remove it from the list.
    • Rhythm - 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 is a Random option (dice) that will generate a new chord rhythm.
    • Type in progression - Type or paste a sequence of chords into the text box, delineated by commas,z dashes, or spaces. Chords can be given by their names (e.g. C, G, Am, F), capital letters only, or their Roman numerals (e.g. I, V, vi, IV). Roman numeral Chords will be created according to the specified root note. The sequence will begin from the first selected Chord.

      Special Characters:

      • = - Keep the current Chord at this position
      • . - Repeat the previous Chord in the text (not the previous existing Chord)
      • ? - Regenerate at this position.
      • Valid separators - [|-, ]
    • Get Current Progression (In arrow icon) - Fill the text box with the Chords from the current Progression. TIP: Use this as a quick way to edit individual Chords.
    • Accept (Tick icon) - Render this Progression of Chords. If no Chord is selected, they will fill up from the first Chord. If Chords are selected, these will be altered in order, but if the typed Progression is longer then additional Chords will be altered or added to complete the Progression.
    • Learn from MIDI input - Select a Chord to replace in the Progression, click the MIDI icon (notice the selected Chord turns red) and play a replacement Chord on your controller.

    Performance

    • Regenerate - Create a new variation based on the current settings. NOTE: This will replace the Pattern associated with each affected Chord with the one currently selected in the Pattern combo box.
    • Copy - Copy the performance of the selected Chord/s to the clipboard. NOTE: If the Chord/s selected last for longer than a whole loop (Length x Lengths per loop), a hybrid Pattern will be generated which is still only of a single Scaling time length. TIP: If you want to learn from your own Pattern of notes that you create in the Piano roll, create the Pattern before opening the tool, then at the relevant Chord(s) select Note linking > Link in the (Right+Click) Chord options. Now your original Piano roll notes will be the Chord notes, so you can use them to Learn the Pattern.
    • Paste - Paste the performance to the selected Chord/s.
    • Save pattern - Save the Performance Pattern of the selected Chord/s as a User pattern.
    • Delete Pattern - If a User Performance Pattern is selected in the combo box below, delete it from the menu.
    • Pattern selector - These act as seeds for the (Re)Generation of Performances, and also update the parameter knobs. NOTE: When an Arp or Chop Pattern is selected, it will be rendered as-is without applying the parameters on the right. If Regenerate is hit or any parameter knobs are moved, the parameters will then be applied to morph the Pattern accordingly.
    • Performance type - Select one of the following manipulations of the Chords...
      • Arp - Arpeggiate the main notes in the Chord. The lowest note will be sustained.
        • Density - Higher density means more notes (or held portions) in the Arpeggio, rather than rests.
        • Note repeats - How frequently consecutive notes are repeated.
        • On beat - How closely notes in the Arpeggio begin on the beat. TIP: This control is related to the Density setting.
        • Articulation - Note length as a proportion of the maximum generated from the Pattern.
        • Pattern bias - How closely the Arpeggio reflects the selected Pattern.
        • Morphing - When morphing is higher, the Arpeggio changes across the Chord Progression.
      • Chop - Rhythmic divisions of the Chords.
        • Density - Higher density means more chops relative to the Scaling option.
        • Sub cycles - Higher values encourage repeated sub-Patterns within each Scaling time interval.
        • On beat - Higher values encourage Chops to begin on the Beat, lower values encourage chops to begin off the Beat. TIP: If you want a more syncopated rhythm, turn this parameter down.
        • Onset skew - Lower values encourage a higher density of Chops towards the start of each Scaling time interval, and towards the end for higher parameter values.
        • Pattern bias - How closely the chopping reflects the selected Pattern.
        • Morphing - When morphing is higher, the chop pattern changes more across the chord progression.
      • Humanize - Note onset and offset variations designed to mimic human playing and strumming. NOTE: - For Humanize, Scaling acts in a similar way to Length for Chord Generation, in that it determines the length of a single time interval within a loop, and a full phrase is considered to be of length (Scaling * Lengths per loop). Lengths per loop can be changed in the Advanced section.
        • Timing depth - The degree to which note start times are altered.
        • Dynamics depth - The degree to which note velocities are altered.
        • Strum time - Higher values spread out the strum more.
        • Strum curve - Alter the strum speed over time.
        • Phrasing weight - The degree to which phrasing over a time interval of (Scaling * Lengths per loop) affects the dynamics.
        • Phrasing offset - Phrasing works by applying a (morphed) sinusoidal push-pull to dynamics over a looped time interval. Altering the offset determines where in those loops the note velocities will tend to increase or decrease.
    • Scaling - This sets the time period for a single repeating chunk of the Pattern. Each Performance is created by applying the base Pattern by looping over time chunks of this length. . Choose from Beats to Bars for this time unit.

    Advanced

    These parameters influence how the Generation model works.

    • Fix generate seed - Select to maintain consistency as you tweak parameters. When deselected the AI Model will use different randomization seeds and results can differ greatly as you change settings.
    • Extensions - Either substitute (replace) basic chord notes with the alterations where appropriate, or add them all as extra notes.
      • substitute / add (switch) - Either substitute (replace) basic chord notes with the alterations, or add them as extra notes.
      • Frequency (slider) - Control how often extensions are added.
      • Max per chord - The maximum allowed number of extensions that can be added to a single Chord.
    • Non-Diatonic notes - Increase this to encourage chords (and extension notes) that are more out-of-scale.
    • Sampling temperature - Controls how 'common' the Chords in the progressions are. Decrease to encourage the AI to choose common Chord transitions. Increase to generate more unusual and less-common progressions with more dissonances and unusual transitions.
    • Chord repeats - Higher values encourage more repeated Chords within each time loop. When set to minimum this will ensure two auto-generated adjacent chords are different.
    • Analysis context - Larger values allow the AI to place more importance on the longer-term Chord transition sequence as opposed to precisely matching Chords only to the notes that exist.. At a value of zero it will only consider notes during the Chord’s time interval and will not pay any attention to surrounding Chords.
    • Looping bias - The AI model generates a Chord then makes a decision about the next chord based on the context of the Chords present. Turning Looping bias clockwise encourages the AI model to use similar or related Chords on each generation loop (of time interval Length x Lengths per loop). Turning it counter-clockwise makes the AI model 'experiment' with different chords on each generation loop for more variety. NOTE: This knob only has an effect if the Progression time is long enough to have multiple loops (chord progressions).
      • Length per loop - Select the number of time intervals of size Length (changed in the top panel) that make up a single Generation Loop. This provides the AI models (Generate / Analyze / Humanize) with a metric context. For example, Chords Progressions will tend to resolve towards the end of a Loop, and Humanization can be encouraged to create dynamics phrasings of the Loop length.

    Shortcuts

    In Piano roll:

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

    In the tool itself:

    • (Mouse wheel) - Horizontal scroll.
    • (Ctrl+Mouse wheel) - Horizontal zoom.
    • (Shift+Mouse wheel) - Change hovered Chord inversion.
    • (Alt/cmd+Mouse wheel) - Transpose hovered Chord.
    • (Space) - Preview.
    • (BackSpace) - Switch snapping.
    • (Alt/cmd+S) - Switch Shunt on/off.
    • (Shift+Z) - Zoom out.
    • (Ctrl+A) - Select all.
    • (Ctrl+D) - Deselect all.
    • (Ctrl+C/Ctrl+V) - Copy/paste.
    • (Ctrl+Z/Ctrl+Alt/cmd+Z) - Undo/redo.
    • (Ctrl+Right-Click) - Zoom out full.
    • (Alt/cmd+Right-Click) - Preview Chord.
    • (Ctrl+G)- Generate a new Progression
    • (Shift+Double-Click) - Add a passing Chord.
    • (Ctrl+Click & 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.
    • (Del) - Delete selected Chords.

    Chord Progressions and Harmony

    We recommend watching the following video if you want to learn more about the role of Chord Progressions in music ...


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

    User Interface: Miroslav Krajcovic.