ChordSeqAI
Menu

Features

Suggestions

Suggestions

Suggestions are a key feature of ChordSeqAI that helps you compose chord progressions with AI. They provide chord recommendations based on the preceding chords in the progression, allowing you to explore new ideas and experiment with different harmonies.

Suggestions UI showing a grid of suggested chords colored by the probability of occurrence. The chords are displayed as blocks with the chord symbol. The top row shows a search bar with the text 'Search a chord...', an icon for searching by notes, and a decay slider.

Get suggestions

When you select any chord in the timeline, this element will show which chord it should be based on the context of the preceding chords. The suggestions are displayed below the timeline, and you can click on any suggested chord to replace the selected chord with it. More options can be found by scrolling down, there are around a thousand chords available (5,000 when inversions and alternate notations are counted).

Loading

The suggestions are generated by the AI model in real-time locally in your browser. The first time you select a chord with a new model, it will start downloading first, which may take a while depending on your internet connection speed. The model is cached in your browser, so it will be faster the next time you use it.

Then, an ONNX session is created for the model, which downloads WebAssembly binaries for the model and runs it in the browser. Finally, the context is sent to the model (may be accelerated by GPU) and the suggestions are generated.

Generally, the first time you select a chord with a new model, it may take a few seconds to load the suggestions. After that, the suggestions will be generated almost instantly (depending on the model and your device).

Chord suggestion

The suggested chords are displayed as colored blocks with the chord symbol. When you hover over a suggestion, a chord variant button will appear, allowing you to explore different voicings and notations for that chord. Additionally, a tooltip will show the model-predicted probability of the chord occurring given the context and the original variant (if it is not the default one).

The first 10 suggestions can be selected via the keyboard by pressing the number keys 1, 2, ..., 0 (not the numpad). The first chord has no previous context and key invariance is assumed, so the probability is equally distributed among the different keys and they are instead sorted by their root note. The last suggestion is always the previous chord (with 0.00% probability, as identical consecutive chords are not encouraged by our approach).

Models were trained to be roughly equivariant to the key, so the suggestions should be similar for the same progression in different keys. However, the suggestions may vary slightly due to the model's probabilistic nature and the training data.

Searching

By symbol

By clicking in the search box, you can filter chords by their symbol. The suggestions will be updated to show only the chords that match the search query. Queries are case-insensitive and can be partial, so you can search for chords by typing their symbol or part of it. Chords remain sorted by their probability, so the most likely chords matching the query will be shown first.

Multiple keywords can be used to search for chords that match all of them (logical AND). For example, typing maj7 C will show only major seventh chords with the letter C in the symbol. Double quotes can be used to search for exact matches, for example, "Cmaj7" will show only the C major seventh chord.

Filters are only applied based on the default variant; enable Include variants to search within all variants (the symbol of the matched variant will be shown instead of the default one). This can be useful if you cannot find a chord that you expect to be supported, as even some common chords are inversions of each other (e.g., Am7 and C6).

Search for suggestions by symbol UI. The search bar has the text 'Search a chord...' inside. Next to the search bar, a piano icon to search by notes is visible.

By notes

The piano icon opens the search by-notes dialog, where you can select the notes you want to include in the chord by clicking on the keyboard. The suggestions will be updated to show only the chords that contain the selected notes. There are three types of matching: Exact (only chords that contain all the selected notes), At least (chords that contain the selected notes, but may contain additional notes), and At most (chords that contain some of the selected notes, but may not contain all of them).

Similarly, as with the search by symbol, there is an Any variant checkbox that allows you to search for chords that contain the selected notes in any variant (i.e., in any order, with any octave, and any potential duplicates). This can be useful if you are looking for a chord that contains specific notes but you are not sure about the exact voicing, hence it is enabled by default.

The At most mode is particularly useful for finding chords belonging to a scale, as it will show all chords that can be built with the selected notes. For example, selecting the notes C, D, E, F, G, A, and B in At most mode will show all the diatonic chords in the key of C major (when the Any variant checkbox is enabled).

Searching by notes can be combined with searching by symbol, so you can filter chords by both their symbol and notes. For example, you can search for all major seventh chords that contain the notes C, E, and G.

Search by notes interface showing a piano keyboard with keys labeled from C3 to C7. Above the keyboard, there are options for matching notes, including a dropdown labeled 'Match' set to 'At least,' and a checkbox labeled 'Any variant' that is checked.

Decay

The coloring of the suggestions is based on the model-predicted probability in a logarithmic way (i.e., half the probability is a fixed brightness difference, until it reaches zero). This means that the most likely chords are colored in a brighter shade, while the less likely chords are colored in a darker shade.

The coloring of the suggestions is also affected by the decay slider. It enables entering values between 3 (on the left) and 9 (on the right), with the default being 6 (the exact numbers are not shown to the user). In particular, the color is linearly interpolated between purple and black based on the value of this expression: 1 - (ln(prob) + decay) /​ decay. A lower decay value will make only the most likely chords bright, while a higher decay value will make more chords brighter.

The decay slider is useful for visualizing the probability distribution of the suggestions since it is not always easy to distinguish between the different shades of purple.