Impro-Visor Roadmap Tutorial

Keyed to Version 5.07

Bob Keller

24 October 2011


Table of Contents



Example 1

Example 2

Playing from the Roadmap

Selecting Bricks

Selecting Styles

Adjusting Feature Size

Adjusting Bars per Line

Key Coloration

Entering Chords to the Roadmap Directly

Breaking and Flattening Bricks

Modifying Chords

Changing Brick Durations


Using the Brick Dictionary

Auto-Generated Bricks

Hard-Coded Information

Use of Sections and Phrases

Example 3

Defining New Bricks


Handling Tension Tonics

Other Points

Deleting from the Dictionary


Appendix I: Glossary

Appendix II: Join Names

Appendix III: Sample Brick Definitions

Appendix IV: Keystroke Summary


Related Links


Impro-Visor Home Page


Impro-Visor Tutorial (for version 4)


Roadmap Garden (sample roadmaps)


Preliminary roadmaps for “Insights in Jazz” tunes


Impro-Visor User’s Group (Yahoo! group)


Bob Keller’s Jazz Page

Insights in Jazz Home Page (John Elliott,


The New Guide to Harmony with LEGO bricks (Conrad Cork,


A Book of Lego Roadmaps (Phil Clark)


Jazz Harmony with LEGO Bricks User’s Group (Google group)








In reading this document, it will be helpful to know some music theory for chord progressions, such as Roman numeral analysis, cadences, and dominant chords. Occasional reference to the Glossary in Appendix I may help with some of the terminology.


Version 5 of Impro-Visor introduced a new feature called “roadmaps”. For any leadsheet, an optional roadmap can be produced automatically. For example, below we have a snapshot of the provided leadsheet and its corresponding analyzed roadmap.


Example 1:



Impro-Visor leadsheet window opened on





Impro-Visor roadmap window showing analyzed roadmap for


In Impro-Visor, a roadmap for a tune consists of the chord progression, annotated with two additional tracks of information:


Š      The inferred key underlying the chord progression.


There is a third element, “joins” that identify transitions between certain bricks.


The information provided will be of use in at least two ways:


Š      For the soloist, the key information is useful in determining which accidentals to use in a melodic line with a given general shape and placement.


In Impro-Visor, chords can be entered into a roadmap, then turned into a leadsheet. It is also possible to construct the roadmap using bricks or chords, in any combination.


There are two important references that provide the background for the use of bricks and joins, including philosophy and examples:


Š      Conrad Cork, The New Guide to Harmony with LEGO bricks, Tadley Ewing Publications, 1996 (available from


Š      John Elliott, Insights in Jazz, 2009 (available from where purchase includes an electronic version, with audio examples).


The term “roadmaps” comes from the second reference, although essentially the same format was used in “A Book of LEGO”, by Phil Clark. Impro-Visor roadmaps have a slightly different format. We include key information, and we put “joins” below the bars with a horizontal orientation for better readability.


Impro-Visor roadmaps are also available in an unanalyzed version, which I’ll call “raw” for short. In a raw roadmap, there are chords but no brick names. Each chord will have a separate key and there may be joins, which should mostly be ignored.


It is also possible to “break down” bricks hierarchically, into simpler bricks, so there is generally a range of views between raw and fully-analyzed.



Analysis takes a bit of time. While it is going on, you will see this in the GUI:



While the status is yellow, it is best not to adjust this particular window. However, you can edit or play in another window. By selecting only a subset of the chords, analysis goes faster.



Example 2:


From the Impro-Visor 5.05 File menu, open leadsheets/changes/ This is a leadsheet for the Miles Davis tune “Tune Up”. From the Roadmap menu in the menu bar at the top of the screen, select Roadmap this & analyze (or just press the accelerator shift-semicolon). A second window should open, and after a brief delay, the roadmap should appear as follows:



Analyzed roadmap for “Tune Up”


This roadmap consists of four lines, each with three tracks, the top track being the colored one. The lines correspond to sections of the tune, which has an ABAC form. The tracks are:

Š      The key of this region of the tune.

Š      The name of the brick, or possibly empty if no brick can be identified.

Š      The chords from the leadsheet.


The third track is taken directly from the leadsheet data. The other two tracks are inferred algorithmically.


Based on a brief examination of colors in the upper track of the roadmap, we can see that the tune is predominantly in the keys of D, C, and Bb, not quite equally distributed.


In the first line, we see two Straight Cadences, i.e. major ii-V7-I cadences, but in different keys, D and C major respectively. Those cadences are joined together with a “New Horizon” join, which is a common way to step down a whole step in key space. The join point is at the right end of the join tag. For example, below the join in the fourth line, repeated below, is a “Bauble” between the BbM7 and Em7 chords.





Showing join point (marked “Bauble”)


What in the world is a Bauble, you ask? What it means as a join and the etymology of the name are two different things. It usually means a transition from one tonality to another tonality, the latter normally being a major third higher (i.e. Bb to D in the case). However, there is more to the story, so don’t fix on that explanation just yet. As for the etymology, the name is from the tune “Baubles, Bangles, and Beads”, which is from the Broadway show “Kismet”. A “Bauble” is a kind of round blown glass ornament, which the tune suggests is wearable. As it happens, all of the joins in that tune are of the same nature, although in different keys.


The transition to the Em7 chord in line 2 is also a bauble, parallel to the one in line 4. However, there is significance between the two lines. In line 4, the Em7 begins a cadence to the tonic DM7, which is quite normal. In line 2, the Em7 jogs to an F7, which begins a perfect (i.e. V7 – I) cadence in Bb. It is difficult to describe this as any sort of harmonic progression that I know. So the Em7 is treated not as part of a cadence, but as a tonic (“On”) in its own right. Then we have another join marked Stella to the cadence in Bb.


You might be able to guess why “Stella”. In the tune Stella by Starlight, between bars 11 and 12, the interval of a minor 6th occurs: Dm7 to Bbm7, which is followed by Eb7. Normally this would cadence to an Ab, which is a tritone above the D. So a jump of a minor 6th to a ii chord, or of a semitone to a V chord, is called a Stella join. Unfortunately, in the tune itself, it is not a normal cadence, so the next tonality actually ends up being F rather than Ab as one might predict. This is one of the tricky things about joins.


The names of joins as original prescribed by Conrad Cork are of two varieties: ones derived from specific tunes in which those joins occur (such as Bauble and Stella) and ones that have a somewhat functional explanation (such as Backslider, which normally takes the harmony backward a step in the cycle of fifths). In both cases, I would say the explanations are a bit personal to Mr. Cork. So those of us who want to know this lingo just have to bite down and learn the names, of which there are twelve total. A table is given in Appendix II. Eventually I suspect that Impro-Visor will allow the user to give her own names for the joins, although we do not encourage this at the moment, because it will result in even more confusion of terminology.



Playing from the Roadmap


Impro-Visor allows the user to play all, or any portion of a roadmap. Simply press the arrow button:

or the return key. If nothing is selected, then the entire roadmap will be played. If one or more bricks are selected, they will be played.


To stop playback, use the k (“kill”) key or the stop button:

To loop the playing through the selection, first press the Loop button:



Selecting Bricks


To select a brick, just click on it.


To select multiple successive bricks, first select one brick by pressing the mouse over it. Then extend the selection by holding the shift key and pressing the mouse over some other brick. The selection can be extended multiple times in this way. In the roadmap segment below, the last two bricks are selected, as indicated by the cyan highlighting.




Showing selected chords and bricks in cyan



To unselect all bricks, click in the background area, rather than on a brick.



Selecting Styles


In the current release, the entire roadmap play is restricted to a single style, even though the leadsheet may have multiple styles. We expect to include style changes in future versions. If the roadmap is derived from a leadsheet, the style will be the first style in the leadsheet.


The style can be set to any Impro-Visor style using the Preferences > Roadmap Preferences menu. The default style is swing, which has bass and drums, with chords in patterns determined from the style specification. If you want a less-busy style, consider selecting style no-style, which eliminates the drums and patterns.



Adjusting Brick Feature Size


Sometimes the roadmaps can be quite dense, impairing readability. To spread things out a bit, the feature width slider on the toolbar can be adjusted:



Feature width adjuster



In addition, double-clicking on this slider will cause it to be linked to the window size, so that the feature width will be adjusted as the window size is changed.



Feature width adjuster constrained with window size (double-click to toggle)




Adjusting Bars Per Line


The number of bars per line can be set with the pulldown menu provided. Normally you would probably choose 8 (the default) or 4, because this is the way a lot of compositions are structured. A reason for choosing fewer than 8 is that complex maps can get rather long if all text within is readable. A reason for not choosing 8 is that 8 often shows the structure of a typical AABA form tune the best.



Key Coloration


Each key has a designated color code. The colors are arranged so that keys that are close together in the cycle of fifths are similar in color. The full color map is given below. Minor keys are colored according to their relative major, and similarly for dominant keys. In a later version, we expect that the colors will be modifiable by the user.




Key coloration legend



It is possible to turn off key coloration altogether: Just press the button B/W on the toolbar of the Roadmap window:



It is also possible to color the keys relative to any selected home key, by selecting Preferences > Key Coloration and the key of choice. For example, for Tune Up, we might designate D as the home key. The corresponding roadmap would then appear as follows:




Roadmap with coloration relative to D


Using this approach can be an aid to learning a tune in a key-independent fashion, similar to movable-do vs. fixed-do in solfŹge.




Entering Chords to the Roadmap Directly


As we have explained, the roadmap chords can be derived from a leadsheet. We can also add chords to an existing roadmap, or even start with an empty roadmap and enter all the chords. With some practice, the latter may be a superior way to create a leadsheet afresh. A new leadsheet can be created from any roadmap by selecting from the menu bar File > Save As to a new leadsheet (or use control-w) and add selected chords to the roadmap. Copying chunks of chords is sometimes easier using the roadmap editor than it is in the leadsheet editor.


We already described selecting a sequence of chords or bricks in the previous section. Using Edit > Copy, or just pressing the c key, the selection can be copied to the invisible “clipboard”. Then the contents of the clipboard can be pasted anywhere on the leadsheet.


To add new chords, select a brick or chord before which you wish to paste. The use Edit > Paste, or just press the v key. The means of entering chords is the same as in the leadsheet window. Use a vertical bar or a comma to separate measures. Separate individual chords with at least one space. For example,




Textual chord entry area


will produce the following. The upper and lower tick marks show the measure sub-divisions.


Two measures, as identified by three tick marks above and below


If you wish to paste at the end of the leadsheet, first unselect everything by using Edit > Unselect All, or pressing the Escape key, or just click in the blank area around the road map. Then use paste as in the preceding paragraph.


For unequal spacing within a measure, use a / to hold the space of a chord. For example,




produces (all one bar, with C getting twice as much space as the other two chords):


One measure, as identified by tick marks only on ends


Click Save or control-s to save changes to your leadsheet.



Breaking and Flattening Bricks


Sometimes it may be necessary to break down a brick one or more levels so that you can insert inside the brick. Bricks may be constructed hierarchically. Keep in mind that breaking down a brick will keep the same chords selected, so you may need to reselect the chord before which you wish to insert.


Another convenience is flatten (or press the f key) which means to break down the brick all the way to the chord level in one operation. To flatten the entire roadmap, select all (control-a), then press f. Note that joins and keys won’t make much sense once flattened. You will need to reanalyze, as describe in the next section.


Editing operations can be undone arbitrarily far back by pressing the z key or using Edit > Undo, and redone by pressing the y key or using Edit > Redo.



Modifying Individual Chords


To change a single chord, double-click on the chord. A small dialog window will open, allowing the name and the duration of the chord to be changed. For example, if I want to make the Dm7 above into a D7, I double-click on the lower track Dm7. The following dialog opens:


Screen shot 2011-10-10 at 5.29.10 PM.png

Chord Modification Dialog


The number in the dialog indicates the number of beats allocated to the chord.



Changing Brick Durations


The durations of all bricks in a selection can be changed by using the Scale Duration pull-down in tool bar.



This permits scaling by a factor of 1 and 5, multiplying or dividing. If other ratios are desired, this can sometimes be accomplished by multiple scaling operations. For example, to scale by 3/2, first multiply by 3, then divide by 2.







Scaling a brick by 3/2




After entering a raw chord sequence, or modifying an existing roadmap, the analysis may need to be repeated. Select the brick or chord sequence to be analyzed, or unselect everything to analyze all. Then use the button


or press the a key as a shortcut.


Analysis is based on a specially-designed parsing algorithm, which will be described in a forthcoming research paper. At this point, the main thing to note is that analysis is always relative to a Brick Dictionary. One dictionary is supplied with the current release, but this dictionary can be modified by the user. This is especially important, as there will undoubtedly be bricks that we did not anticipate. The current dictionary is built largely based on definitions in John Elliott’s and Conrad Cork’s books. There are undoubtedly some mistakes and omissions, and we hope to correct these in time.



Using the Brick Dictionary


Bricks can be added to a roadmap in formation by making menu selections from the dictionary. Open My Dictionary from the menu bar. There is only one dictionary in the initial release. To save the current dictionary under some other name, for subsequent modification, select Editor > Save Dictionary Asprior to modifying. That name will become your current working dictionary. Below is how the initial dictionary appears, with Ending > Four Star Ending selected:

Screen shot 2011-10-10 at 10.13.50 PM.png

Dictionary menu


When a brick is selected from the dictionary menu, its typical pattern appears in the Brick preview window. In present case, here is what appears in the preview field:



Previewed brick



From the preview, the user can drag the brick into position in the roadmap using the mouse, or press the button on the right to insert it.



Similarly, bricks that have already been placed into the roadmap can be repositioned by dragging. The cut (x key), paste (v key), and copy (c key) operations also work pretty much as standard, within the roadmap.


Another way to get bricks from the dictionary into the roadmap is to double-click the brick name in the dictionary itself. This will cause the brick to be inserted at the insertion point.


Before a brick is inserted into the roadmap as above, the user can preset the key of the brick using the features at the bottom of the dictionary menu. The duration is a relative indication of how long the brick will be.



Both the key and duration can also be adjusted once the brick has been inserted. Use the d (down) and e (up) keys to transpose any selection. Use the Scale Duration menu in the menu bar to scale the selection by various factors (x2, x3, /2, /3, etc.).




In some cases, there will be multiple variations on a brick with a given name. In the dictionary menu, these are seen as folders. For example, under Turnarounds > Foggy Turnaround we see two options:



When previewed, we see that the distinction between them is just in their penultimate chords:


Two variant bricks



It may also be noted that, in the current release, which variation is used is not evident in the roadmap. Below, for example, we use both variations in a roadmap, but they are only differentiated by content, not by name. We plan to enable an option for specifying the variation in the future.



Two variants analyzed from a sequence


When a brick is composed of sub-bricks, and those bricks have variations, we can get a kind of explosion of variations. These are all usable in recognizing bricks, but not all of them will be previewable from the dictionary.



Auto-Generated Bricks


For each brick of type Cadence, the Impro-Visor system automatically generates two extra brick definitions for that cadence, one with an overrun and one with a dropback.


An overrun means that after the cadence to a I chord, the progression goes to a IV chord, for example C going to F following a cadence in the key of C. This is common in many songs, such as “Autumn Leaves”.


A dropback follows the I chord with a VI7 chord, typically used to lead to the ii chord. For example, following a cadence to C, the dropback would be A7. There are many variations on dropbacks in the dictionary. The ones that are auto-generated currently are just a plain VI7 from any cadence.



Hard-Coded Information


Part of the roadmap analysis is based on hard-coded tables that cannot be modified by the user. We hope to reduce the amount of information that is represented in this way in future releases. An example of information that a user cannot change is the names of joins, and even the definition of a join, which in my experience still somewhat nebulous.


In the current release, a join is defined as a connection between two bricks, in which the first brick ends with a stable chord and the following brick begins with an unstable chord. Typically the stable chord is a major or minor tonic, and the unstable chord is a minor seventh or dominant. The name of the join is determined by the distance between the roots of stable chord and the unstable one. If the following chord is a minor seventh, then one distance is used, whereas if the following chord is a dominant, the distance is as if to the companion V chord of the corresponding ii chord as a minor seventh. See the table in Appendix II for a list of all joins.


My own inference from Cork’s presentation, as well as from discussion with John Elliott, that the meaning of a join is fundamentally based on the sound of the connection between the two bricks (what Cork calls the “magic moment” of the local progression). Thus it is not quite correct to base it on the tonality of the typical resolution, because in many cases the brick following the join does not resolve in the typical manner. This distinction often throws newcomers off. It did in my case.


Also, we do not, in this release, go along with John Elliott’s suggestion that in the case of a brick ending with an “overrun” (following a I chord by a IV chord), that the join be based on the I chord. Although Cork discusses this distinction, I feel that based on the sound of the chord ending the first brick and not its tonality, I hear the join as coming from the IV chord. Algorithmically, this distinction is easy to change and we may provide an option for doing so in the future. However, for sake of not introducing too many nuances in this first release, we adopt the more uniform policy. A consequence of this is that where John’s joins to an overrun might be a Backslider, ours would be a Bauble, a difference of a perfect fifth, for example. But being off a perfect fifth in sound is not really of such dire consequence.



Use of Sections and Phrases


Sections play a role in analysis, because it is not generally possible to infer sub-phrasing from a flat chord sequence of the length of an entire song. A section is division in the chord sequence. For example, a 32-bar AABA form would have four 8-bar sections. Sections were already present in previous releases of Impro-Visor, serving primarily as the indicator for style changes.


With the introduction of roadmaps, sections play an additional role: bricks are not allowed to cross from one section to another. This constraint often prevents analyses that would be considered wrong. In the roadmap GUI display, a section will also start a new line if not already at the maximum number of measures per line, which is 8 by default, but which can be set by the user to any number from 1 to 24.


To have the effect of a section end without starting a new line, we introduced phrases. For roadmaps, phrases and sections behave the same way, except that a phrase does not force a new line in the GUI display. On the lead sheet, phrases show up as apostrophes, the traditional phrase marker in music, above the staves. These markers can be suppressed by using the View menu in the leadsheet window. Sections, on the other hand, show as double bars, and these cannot be suppressed in the current release.


If one starts with a leadsheet with no sections or phrases, as are many in the current version of The Imaginary Book, it may be beneficial for the user to add sections and possibly phrases and save them with the leadsheet. Familiarity with the tune will usually indicate where these are to be placed. They are easier to add in the roadmap view than in the leadsheet.


To end a section on the roadmap, select the last chord or brick of the section and press key m. This key will toggle the section on or off. It will cause a line break if the chord or brick is not already at the end of a line. To end a phrase, press shift-m. This will toggle the phrase on or off. It will not cause a line break.


Entering style change information can only be done on the leadsheet view, because roadmaps only know about a single style per tune. From the leadsheet window, open Preferences > Section & Style. There each section has a style. The Phrase box is checked if the measures are to be viewed as a phrase. Checking and unchecking this box can also be used to control the section phrase distinction. Also sections and phrases can be added are deleted in this view. Deleting does not change the content of the measures themselves, only whether or not there is a section or phrase break.




Style preference dialog in the leadsheet window



Example 3:

In this example, we will demonstrate use of sections and phrases, as well as the introduction of new brick definitions. Let’s enter a standard tune “Blue Moon”, which has an AABA form. The chord progression for this tune may be expressed in Impro-Visor leadsheet notation as follows:


(section (style swing))

Eb Cm7 | Fm7 Bb7 | Eb Cm7 | Fm7 Bb7 |

Eb Cm7 | Fm7 Bb7 | Eb | Fm7 Bb7 |



Eb Cm7 | Fm7 Bb7 | Eb Cm7 | Fm7 Bb7 |

Eb Cm7 | Fm7 Bb7 | Eb | / |



Fm7 Bb7 | Eb Cm7 | Fm7 Bb7 | Eb |

Abm7 Db7 | Gb | Bb F7 | Fm7 Bb7 |



Eb Cm7 | Fm7 Bb7 | Eb Cm7 | Fm7 Bb7 |

Eb Cm7 | Fm7 Bb7 | Eb | / |


Open a new leadsheet window, then open the Textual editor (control-F). Select with the mouse everything therein, delete it, then copy and paste the text above into the Textual editor and press Editor to Leadsheet. You could save this leadsheet for future possible use as well. Impro-Visor will automatically add meta data to your chord sequence.


Now select Roadmap this & analyze from the Roadmap menu (or use shift-semicolon). At first, the roadmap will appear without bricks and the keys will not be cohesive. After the analysis is complete, however, we get a better view:



Blue Moon roadmap


Focus on the first line, where the brick is labeled POT:



POT is an acronym for “Plain Ol’ Turnaround” coined by Conrad Cork. By one definition at least, a turnaround is a progression from a given tonic back to itself. In this case the tonic is an Eb major chord, and the progression sequence Eb Cm7 | Fm7 Bb7 | “turns around” back to Eb major. The “Plain Ol’” aspect is due to the prevalence of this turnaround in popular music. It is, of course, the I – vi – ii – V progression, using roman numeral notation from music theory.


The first line consists of four identical POTs. The second line is almost the same, except that it ends with “POT + On”:




“On” is a code word meaning a stable tonicity, typically a I chord in the key of the moment. In this case, the “turning around” temporarily ends. The last three or four chords also form an example of an implied cadence.


Now focus on the first half of the third line:




The word “dropback” is overloaded (has more than one meaning, depending on context), due to John Elliott. One of several uses of “dropback” is that of a VI or vi chord, which typically leads to a ii chord in the same key. In this case, Cm7 is such a chord. The other use is this particular brick, which contains the dropback chord.


Just for fun, let’s try breaking down this brick into smaller parts. Select the brick and press the b key. Here’s how it now looks:




This reveals that the original brick is really two cadences, although the second cadence has already been broken into an approach and a cadence. It might have been better to have this brick defined in the dictionary as two cadences separated by a dropback chord, but this is the way it was defined in this release.


We can analyze a contiguous selection of bricks and chords. For example, if we select the bricks above, flatten (f key) them, which means to remove all brick structure, then analyze (a key) the first four, here’s what we find:




If we now analyze the remaining three chords, here’s what we get, which better shows the structure of the 7-chord dropback.





Defining New Bricks


Ideally one should never have to define new bricks. However, given that the developers are not omniscient, it may be occasionally necessary. Return to Example 1, “Tune Up”. Recall the following situation at the end of line 2:



It would be nice if this were a 4-bar brick, since then the entire tune would consist of just 8 bricks, in two distinct classes. When deciding whether to define a brick, one should ponder how much utility it is likely to have, i.e. will it recur. In the present case, probably not, but to give an example of how bricks are defined, we ignore our own advice and proceed. Select the chords and sub-bricks.



Selection made to create new brick



Now press the button Define Brick in the tool bar:



A small dialog should open:

Screen shot 2011-10-11 at 12.55.53 AM.png

New-brick dialog


The dialog invites us to give this brick a name, so let’s call it “Tune Up Cadence”, in recognition of its source. It is also important to give it the correct key, which in this case is the key of resolution, Bb. We should select the Type as Cadence, then press Accept:


Screen shot 2011-10-11 at 1.01.39 AM.png

New-brick dialog with information entered




If there were already bricks with the same name in the dictionary, the Variant field would be enabled, inviting to type the name of this variant. In this case, the brick is unique, so there is no variant name. The brick should immediately change to reflect the new definition.



New-brick as it first appears in the roadmap



Moreover, if we flatten (f key) the brick, then reanalyze (a key), we should recognize this brick. A stronger test is to reanalyze the entire tune, by unselecting all bricks, then pressing the a key. This implicitly flattens everything before analyzing. The result in the present case is as desired. Once again, defining a “Tune Up Cadence” is just for illustration purposes. We don’t recommend this particular definition.



Analysis after the new brick definition





A cadence can be broken down into two parts:


Š      The approach, such as ii – V.

Š      The resolution, i.e. the I.


When the approach occurs at the end of a section, and the resolution occurs at the beginning of the next section, the approach is called a launcher, because it “launches” or drives forward into the next section.




Handling Tension Tonics


Tension tonics (dominants that behave as I chords) have presented somewhat of a problem for analysis throughout our research and development. Fairly late in the development, I decided to try the following idea: If a dominant is to behave as a tonic, then suffix an underscore to it, to let the analyzer know. However, in the Impro-Visor vocabulary, the corresponding chord can be defined as the same chord without the underscore. For example, C7_ is interpreted as a tonic, but its voicings and so forth would be the same as C7.This appears to work, but requires more evaluation. In the 12-bar blues shown in the introduction, only the F13 chord, which would be considered the I chord in this blues, has the _ affixed.


Very few of our leadsheets currently include the tension tonic notation. We need to go back and add them in.



Other Points


Most of these points describe differences from John Elliott’s roadmaps.


Š      We don’t call out “hovers” (multiple measures of the same chord). We just leave them as implicit, or cover them with an “On” brick.


Š      We don’t have a notion of aborted bricks. Conceptually this would not be difficult to add, but it increases the ambiguity in analysis, which might make the results less satisfying.


Š      Currently we don’t call out nicknames for certain stand-alone chords based on keys, such as Nowhere for bVI and Somewhere for II. This can be done by in principle by adding a further pass over the roadmap, but it requires additional implementation work.


Š      We use “Dogleg Cycle” for our “Rhythm Bridge” currently. There seems to be a bug preventing this special case of a dogleg cycle from being recognized as a rhythm bridge. It is expected that this will be fixed in a future version.


Š      Sometimes our algorithm gets confused about what is “On” vs. “Off”. Some of this confusion is remediable by a refined algorithm.



Deleting from the Dictionary


Although there is a Delete button on the Dictionary menu, this appears to be not working at present, so I’ll tell you a different way to do it. From the menu bar, open Editor > Dictionary Textual Editor. New definitions are placed near the bottom, so scrolling to the bottom, we find a textual version of our definition in parentheses. Carefully select the entire definition, as shown:




Editing the dictionary text


Then press the delete key, then press Editor to Dictionary. The brick deleted should no longer appear among cadences. It’s a good idea to check for other bricks that use the deleted one, and either delete them or replace their use with something else. Otherwise there will be complaints when the dictionary is loaded next. Also, be very careful in editing, because even a small mistake can invalidate the entire dictionary.


You can use any text editor for this purpose. The built-in editor is rather impoverished, as it has no search or replace features.


User-defined bricks will generally appear at the bottom and their definitions can be edited and the dictionary saved.

The format of definitions in the dictionary text file is:


(defbrick name-of-brick-being-defined  optional-variant-name-in-parens  mode  category  key





Š      mode is one of {Major, Minor, Dominant}.

Š       category is one of the categories listed at the top of the file.

Š       key is the prevalent key of the brick. For example, if it is a cadence, then the key is the key of resolution.


Currently the categories are:


(brick-type Approach          45)

(brick-type Cadence           30)

(brick-type CESH              10)

(brick-type Deceptive-Cadence 60)

(brick-type Dropback          30)

(brick-type Ending            30)

(brick-type Invisible       2000)

(brick-type Overrun           30)

(brick-type On-Off          1005)

(brick-type Off-On          1010)

(brick-type On-Off+          100)

(brick-type On               550)

(brick-type Opening           25)

(brick-type Pullback          45)

(brick-type Turnaround        20)

(brick-type Misc              40)


The numbers are used in the analysis algorithm, and we will provide an explanation of their meaning to an appropriate forum.


Keys should be chosen carefully, as they are used in the key inference algorithm.


For the sub-bricks, each must be one of the following two forms:


         (chord chord-name duration)


         (brick brick-name key duration)


where durations are relative to each other.


Editing the dictionary text is not to be undertaken casually, needless to say. Always back up your work.





The major part of the implementation of roadmap analysis and the roadmap GUI was done by Zack Merritt, Xanda Schofield, and August Toman-Yih.


John Elliott provided critique of some of the on-going work and valuable suggestions. Also, his roadmaps were immensely valuable in providing training examples (for us humans; there is no machine learning, yet).


Finally, I thank Conrad Cork for getting the whole concept started and providing encouragement as I was learning about the method.


I take responsibility for any mistakes and misinterpretations.



Appendix I: Glossary


Meanings in the glossary that refer to other defined terms have the first occurrence of the term italicized.





The part of a cadence that would lead up to, but not include, the resolving tonic. Can occur by itself, i.e. unresolved, outside a cadence. See also “launcher”.


A type of join (see Appendix II).


A type of join (see Appendix II).


Short for “Yardbird”.


A type of join (see Appendix II).


An idiomatic sequence of chords.


A harmonic progression starting with tension and resolving to a stable chord. It is important to note that, in the present context, cadences end a harmonic phrase, but not necessarily a melodic one.


An acronym for “Contrapuntal Elaboration of Static Harmony”, popularized by Jerry Coker. It means that the harmony moves very little, but one of the notes, typically the fifth or seventh, moves chromatically. Also sometimes called a “line cliché”. Examples are the James Bond theme and “My Funny Valentine”.


A type of join (see Appendix II).


Shorthand for the cycle of fifths.


in the scale”. A progression that moves up or down the scale.


A change from a dominant to the parallel minor seventh. Sometimes thought of as being similar to a join, although technically it is not. “Dogleg cycle” is a cycle of the form D7 Dm7 G7 Gm7 C7 Cm7 …, which breaks down a cycle of dominants by introducing the corresponding ii chord before each dominant, as if the latter were a V7 chord.


A type of join (see Appendix II).


A chord or progression following a cadence which is either a VI7 or leads to one. It typically progresses to a ii chord. Also, in John Elliott’s terminology, a “7 Chord Dropback”, a cadence followed by a dropback chord, followed by the same cadence again.


A progression known to end certain songs, although the progression itself could occur anywhere in other songs.

further away

The ii chord, in Conrad Cork’s terminology, where a cadence is described as the sequence “further away”, then “nearly there”, then “there”. See “TTFA”.

Half Nelson

A type of join (see Appendix II).


A cadence that goes #IVm7 bVII7 I. The name derives from the tune “It Could Happen to You”, which contains this cadence near the start.

high jump

A type of join (see Appendix II).


A type of join (see Appendix II).

IV ‘n …

Stands for “IV chord and …”. Moving to the IV chord is very common in standards. The rest … is about how to return to the I chord. Variants are IV ‘n Back (back directly, e.g. by via a diminished seventh), IV ‘n Yak (back via Yardbird), IV ‘n Hack (back via happenstance), and IV ‘n Mack (back via minor IV) (all John Elliott’s terminology). 


A particular kind of transition between two bricks

Ladybird turnaround

A turnaround that occurs at the end of “Ladybird”. It can be seen as a sequence of tritone substitutions for a POT.


An approach that extends to a cadence at the beginning of the next section.


A sheet of music containing just chords and melody.

new horizon

A type of join (see Appendix II).


A chord that contrasts with an On, often alternating with it more than once. For example, C Bb7 C Bb7 would be “On Off Twice”.


Shorthand for a (usually-stable) tonic.


A progression known to start certain songs, although the progression itself could occur anywhere in other songs.


A IV chord following the I chord in a cadence.


Referring to certain progressions from “Pennies from Heaven”.

perfect cadence

A V7 I progression


Acronym for “plain olturnaround”, a I vi ii V7 progression, or variation thereof.


A progression that “pulls back” from a ii V7, by going to a iii VI7.


An adjective referring to the use of a diminished chord as a downward passing chord, as it occurs in the last section of “Here’s That Rainy Day”.

sad cadence

A minor cadence, IIm7b5 V7(altered) Im.


A progression in which a ii V7 is followed by another a half-step below. (Not exactly the same as melodic side-slipping.)


A type of join (see Appendix II). Not related to the Lee Morgan tune with that name.

Slow approach

An approach that consists of II7 V7, or vi II7 V7, or II7 ii V7, or vi II7 ii V7. It is “slow” because it fills more space than simply a ii V7.


Acronym for “suspended turnaround”, a progression similar to a turnaround, except that initial I chord is replaced with a iii chord. (It has nothing to do with sus chords.)


A type of join (see Appendix II).


Referring to certain progressions in “Stella by Starlight”.


A chord that doesn’t sound as if it does not need to move to another chord.

straight cadence

A major cadence, ii V7 I.


A diminished chord moving upward to another chord.

surprise cadence

A cadence that starts as if major but resolves to minor, or vice-versa.


A chord that suggests movement to another chord.

tension tonic

A dominant chord that is treated as if a tonic.

To IV ‘n …

A progression that goes from a I chord to a IV chord, then returns. See IV ‘n ….


A chord with a stable sound, or one that is treated as if it were stable.


Turnaround to further away”. A turnaround to the ii chord. Because such a turnaround usually ends with V7 of ii, which is VI7, this progression is a dropback.

tritone substitution

The substitution of a dominant a tritone (augmented fourth) away from the dominant for which substitution occurs. Usually the substituted chord leads to the next chord by a descending half-step.


A progression that starts with a tonic and leads back to (but does not include) the tonic.


A type of join (see Appendix II).


The cadence IVm - bVII7 – I, with the IVm being optional. Yardbird is derived from this progression, as it occurs in the start of “Yardbird Suite” by Charlie Parker. Apart from the Lego literature, this is called a “Backdoor cadence”, by Jerry Coker and others.



Appendix II: Table of Joins


The following table describes the join names, which are based on Conrad Cork’s definitions.


Distance to ii

Join Name


ii (minor 7)

V7 (dominant)

Typical Resolution

(from C)



New Horizon





The key focus typically moves down a whole step.







The key focus typically moves down a half step.







The key focus typically stays the same.







The key focus shifts up a half step, as in entering the bridge of “Cherokee”.







The key focus shifts up a whole step, as inside the bridge of “Woody ‘n You”.


High Jump





The key focus jumps up a minor third, often from minor to the relative major.







The key focus jumps up a major third, as in “Baubles, Bangles, and Beads”.







The key focus moves forward around the cycle of fifths.







The key focus jumps a tritone away, as loosely derived from “Stella by Starlight”.







The focus moves backward around the cycle of fifths.


Half Nelson





The key focus moves down a major third, as in “Half Nelson” (although the tune itself does not contain a true Half Nelson, but “Ladybird” does.







The key focus moves down a minor third, often from major to the relative minor.



Appendix III: Sample Brick Definitions


Note that these are samples. Not every brick currently in the dictionary is listed.
























Appendix IV: Roadmap Keystroke Summary


By parent window we mean the window from which the current roadmap was derived, if any.





Select All of the roadmap.


Analyze the selection (or analyze all, if nothing selected).


Break the bricks in the selection (can be repeated).


Copy the selection to the clipboard.


Transpose the selection Down a half-stop.


Transpose the selection Up a half-stop.


Flatten the selection.


Play the selection.


Stop playing.


Insert or remove (i.e. toggle) section marker after brick or chord.


Insert or remove (i.e. toggle) phrase marker after brick or chord.


Open a different leadsheet in the parent window.


Print the current roadmap.


Close the current roadmap window.


Save chords to the new leadsheet (not to the parent window).


Paste from clipboard before the current selection, or paste at end if nothing is selected.


Save as to a new leadsheet.


Cut the selection from the roadmap.


Redo the previously undone operation.


Undo the previous operation.


Delete the current selection from the roadmap (same as x).


Unselect everything in the roadmap. (Can also be done by clicking on the background.)


Play the selection.