Impro-Visor Tutorial

Note: There is a newer version of the Tutorial keyed to Impro-Visor Version 4

Bob Keller

Harvey Mudd College

13 May 2008

(keyed to Version 3.39)

This Document Copyright (c) 2008-2009 by Robert M. Keller, all rights reserved

Welcome to Impro-Visor, a program to help musicians construct melodies similar to ones that might be improvised over given songs. With Impro-Visor, you can playback your melodies as soon as you enter them, with automatically generated rhythm-section accompaniment. In addition to this aural feedback, you can also get visual feedback that will help you learn which notes sound the best over which chords. You can also use Impro-Visor for play-along practice, notation, transcription and song composition.

Table of Contents

  1. Distribution folder
  2. Starting the program
  3. Loading an existing leadsheet
  4. Tutorial exercise
  5. Playing a leadsheet
  6. Controlling playback
  7. Positioning the mouse on the staff
  8. Slots
  9. Entering notes
  10.  Shortening notes
  11.  Making corrections
  12.  Selecting slots without entering note
  13.  Summary of selection sequences
  14.  Un-select everything
  15.  Adding rests
  16.  Changing slot spacing
  17.  Playing a selection
  18.  Playing to the end of the chorus
  19.  Looping playback
  20.  Getting advice
  21.  Scale choices over chords
  22.  Toggling enharmonics
  23.  Cell choices
  24.  Transposing by octaves
  25.  Idioms
  26.  Lick choices
  27.  Rectification
  28.  Harmonic vs. Simple Entry
  29.  Forms of transposition
  31.  Using the lick generator
  32.  Generating to the chorus end
  1.  Undoing entries
  2.  Saving licks
  3.  Avoiding saving duplicates
  4.  Touching up melodies
  5.  Copying, cutting and pasting melodies
  6.  Note coloration
  7.  Note entry parallax
  8.  Tracker delay
  9.  Transpose playback
  10.  Key signature
  11.  Time signature
  12.  Adjusting the layout
  13.  Freezing and thawing
  14.  Adding choruses
  15.  Removing choruses
  16.  Changing number of bars
  17.  Starting a fresh leadsheet
  18.  Opening another leadsheet
  19.  Entering chords
  20.  Slash chords
  21.  Polychords
  22.  Textual entry field
  23.  Alternate transfer of chords
  24.  Transfer chords back
  25.  Copying, cutting, and pasting chords
  26.  Copying chords and melody
  27.  Transposing chords
  28.  Entering melody textually
  29.  Transferring melody back
  30.  Entering melody and chords
  1.  Transferring melody and chords back
  2.  Summary of key stroke commands
  3.  Drawing feature
  4.  Uneven chord spacing
  5.  Aligning chords to slots
  6.  Leadsheet textual editor
  7.  File saving
  8.  MIDI file saving
  9.  Mixer button
  10.  Mixer sliders
  11.  MIDI recording
  12.  Preference dialogs
  13.  Global settings
  14.  Leadsheet settings
  15.  Chorus settings
  16.  Style settings
  17.  MIDI settings
  18.  Drawing settings
  19.  Lick generator controls
  20.  Lick generator grammar editor
  21.  Style editor
  22.  Chord voicing utility
  23.  Style sample leadsheets
  24.  Style extractor
  25.  Conclusion
  26.  Acknowledgment
  27.  Glossary
  28.  Keystroke summary
  29.  Supplied scale vocabulary
  30.  Supplied chord vocabulary



The screen shots that you see in this document were made on a Mac running MacOSX. However, Impro-Visor also runs on Windows (XP, 2000, and Vista), and Linux. In short, it will run on any platform that supports Java 1.5 or later. You must have such a version of Java installed on your machine before running Impro-Visor.


1.     The Distribution Folder: It is assumed that you’ve downloaded the program from the user group website. If you open the Impro-Visor folder, you should see something like the following:


The Impro-Visor distribution folder


If you don’t have this configuration, you may have not unzipped the release into a single folder. In this case, you need to go back and do that.


With the exception of the program file, improvisor.jar, most of the files are text files, even though they may have an extension other than .txt. You may look at these files with a regular text editor. However, because many of them were produced on a Mac, they may lack niceties, such as carriage returns. In any case, it is our intent that the files be opened from within the program. The content of these folders is:




various kinds of leadsheets that can be played with the program. Included here is “The Imaginary Book” of chord changes to 2500 tunes or more


vocabulary information and other information, such as preferences, that are loaded by the program


each file represents a style that can be played by the program. More styles may be added by the user


example for extracting style specifications from MIDI files



2.    Starting the program: Double-click the improvisor.jar file. You should get a splash screen below for a short while as Impro-Visor loads the vocabulary.

The Impro-Visor splash screen

Then a window similar to the one below should open. (If the splash screen persists for a long time, say several minutes, then something may be wrong with the configuration.)



Impro-Visor leadsheet window


This window is a blank “leadsheet”, a sheet on which melody and chords are entered. Although treble staves are showing above, bass and grand staves are also possible. It is also possible to have multiple leadsheets open at the same time, and to cut and paste between them.


3.    Loading an existing leadsheet: Click the open-file icon (the second icon on the upper left, which looks like a file folder. You should get a file chooser similar to the one below.



File chooser


4.    Open exercises, then, as a sample leadsheet. This leadsheet is only 2/3 completed. Finishing it will be our first task.



Tutorial leadsheet


5.    Play this leadsheet by clicking the triangular icon in the second row. All sound from Impro-Visor comes through MIDI (Musical Instrument Digital Interface). You may have to access a control panel to make sure that MIDI playback is enabled on your computer.


6.    Controlling playback: You can pause playback by clicking the two vertical bars, or stop it by clicking the box. There are also key strokes that start and stop, and these may be more convenient in many cases:





stops (“kills”) the playback


starts playback from the beginning


7.    Positioning the mouse on the staff: As you move the mouse over the staves, you will note a some vertical lines become highlighted, and there are brackets beneath, as shown:


Slot display


8.    We call the vertical lines slots. These are places where notes can be clicked in using the mouse. (Notes can also be typed in, but we will cover this later.) By default, there are two slots per beat (as shown by the bracket 2’s), so the duration between one slot and the next is that of an eighth note. There are actually 120 slots in one beat, but only a few of them typically show, to avoid clutter.

9.    Entering notes: Click somewhere on the stave near the first slot. You should get a note something like the following:


First note clicked (bar 9)


You should hear your note in the context of the chord being played along with it.
(If you don’t want to hear it, you can silence everything by toggling the Mute button.)

Mute button and volume control


10.  Shortening notes: Most likely you did not want a note this long. That’s ok. Impro-Visor is just trying to make it faster to enter notes, by not requiring you to enter a duration for each note separately. To see how this works, click on the next slot, to get a display similar to the one below:


Additional note clicked


Continue entering notes with different durations, until you have 7-8 notes, something like what is shown:


Several notes clicked


11.   Making corrections: If at any point you don’t like what you entered, just go back and click over it. Impro-Visor will never put more than one note in a slot. Moreover, as you click a different pitch in a slot, then duration of the note will remain the same.


Pitches were modified, but durations remain the same.


12.  Selecting a slot without entering a note: To do serious editing with Impro-Visor, you will want to know how to select a slot without setting or changing a note. Select a single slot outside the current selection is a two step process: (1) Hold the shift key and click on the slot, then (2) click again. For example, to click on the e note above, I hold the shift key and click there, then click again. The first step extends the current selection, while the second reduces the selection to a single note.


Step (1): shift-click on e slot extends the existing selection to that slot.


Step (2): shift-click reduces the selection to a single slot.


Had it been the case that there was no selection initially, only step 2 would have been necessary.


13.  Summary of selection sequences: While the above steps might seem to be more complex than what you are used to, they are designed to make editing go really fast. This is probably the most complex sequence you will have to learn. So here is a summary:



click without shift

enters a note

with no
current selection

selects a slot, without entering a note

current selection

extends selection to the slot on which you clicked

current selection

selects just one slot, without entering a note


To select the window without selecting a slot or creating a note, click in the margins on either side of the staves.


Note that a selection can extend over multiple staves.


14.  To un-select everything, press the escape key. To select everything, press control-a.




un-selects everything


select all slots


15.  Adding rests: To add a rest, you simply select a single slot, as above, then press the r key. Rests have characteristics similar to notes. They just don’t have any pitch. Thus the value of the rest will be that of the note it replaces. The figure below shows a rest added where the e had been. An alternate way to add a rest is to click on a slot while pressing both shift and control.


Adding a rest using the r key.





put a rest in the selected slot


select a slot and put a rest there



16.  Changing the slot spacing: To enter triplets, sixteenth notes, etc., the slot spacing needs to be changed. By pressing a numeric key, one of 1, 2, 3, 4, 5, 6, 8, 9 the slot spacing changes to that many slots showing per beat. Thus for eighth-note triplets, press three and enter the notes or rests. For sixteenth notes, press 4 and enter the notes as shown:

Triplet, sixteenth-, eighth-, and thirty-second- note slot spacing.
The brackets on top are the triplet brackets. The brackets below show the slot spacing.


17.  Playing a selection: Once you have entered some notes, you might want to hear how just that phrase sounds. First select the phrase, using the steps outlined above (requires two shift-clicks usually). Then press return (or enter on some keyboards). You should hear just that selection played, with some accompaniment.

18.  To play the selection, then continue playing to the end of the chorus: Hold shift when you press return.

19.  Looping playback: Press the green Loop button to have the playback repeated the desired number of times. If you set the times to 0, it will loop until stopped (with the stop button or k key). Press the Straight button to not loop any further.


Toggling the loop button


20. Getting Advice: Let’s move on and select the first slot in measure 11.



Select first slot in bar 11

To ask Impro-Visor for advice on what might be played, we could click left-hand light bulb icon:


Advice icon


A menu similar to the following should open.


An advice menu


21.  Each item opens to a set of things that might be played at this point. We encourage you to explore these, as they contain elements of jazz music theory, indicating the spelling of the first chord, scales that go with the first chord, and transitional information. For example, the Scales tab opens the following menu of choices:


Scales tab of the advice menu


from which we can select one of the suggested scales to see how its tones fit the progression.


F Lydian dominant scale


22. Toggling Enharmonics: If you wish to toggle the enharmonic representation of notes in a selection (e.g. switch eb to d#), simply press the space bar. This does not change the sound, only the visual representation.

Toggling eb to d#

To do the same for chords (e.g. Db7 to C#7), press the space bar while holding shift. To toggle for both notes and chords, press the space bar while holding control.





toggle enharmonics of all notes in selection


toggle enharmonics of all chords in selection


toggle enharmonics of all chords and notes in selection


23. Alternatively, selecting the Cells tab shows a variety of cells (short note sequences) over the current chord:



Cells tab of the advice menu


The slashes on the left indicate the directionality of the sequence (/ for up, \ down for down). Selecting, for example, /\ [F7] dominant (f-8 a-8 eb8 c8) gives us the following, when transposed up an octave.


A simple cell from the vocabulary


24. Cells and other melodies are not always saved in the octave you might desire. To transpose a selection up an octave, press the t key. To transpose down an octave, press the g key.





transpose selected notes up an octave


transpose selected down up an octave


25. Idioms are similar to cells, in that they are selected based on one chord. However, the term idiom suggests a melody that is a familiar jazz clich¬é. Below is an example of an idiom, which happens to be blues oriented, /\  [F7]  blues (b-8/3 c8/3 b-8/3 bb-8 ab-8 f-8):


A blues idiom from the vocabulary


26. At the next level of complexity are licks, which are based on one chord or two consecutive chords. Here is an example of a lick for the current two-chord sequence, \/\/  [F13 -> D7#5#9]  I7-VI7alt (a8/3 f8/3 d8/3 b-8 c8 gb8 eb8 ab8 r8):


A two-chord lick from the vocabulary


27. Although licks are indexed over at most two chords, they can be used over any number of chords. The just might not sound as good. (The reason we index on only two chords is to keep the licks short, which permits combining them together in more ways than if we stored long licks.) For licks that don’t quite fit the harmony, Impro-Visor provides a rectify feature that will pull arbitrary notes in line with the chords. For example, if we try a lick intended for two chords over a 4-chord sequence, we may get some disagreeable notes (shown in red):


A lick that doesn’t quite fit the chord progression


we can rectify the sequence by pressing control-r with the sequence selected.

Rectified lick


28. Notes entered by point and click are generally rectified harmonically upon entry. For example, if the current chord is C7 and the B line on the staff is clicked, you will get a B-flat, corresponding to the chord. If you prefer simple, rather than harmonic entry, toggle the simple button on the menu bar:


Toggling simple vs. harmonic note entry


29. This seems like an appropriate to bring up the other forms of transposition. Simple transposition raises the selection up or down chromatically in half steps. We use the e key for up, and the d key for down. Harmonic transposition raises the selection up or down harmonically. This is similar to chromatic transposition, followed by rectification. For example, here is the previous lick transposed up chromatically:


Previous lick transposed up chromatically


and here it is transposed up harmonically:


The lick before, transposed up harmonically





transpose selected notes up an octave


transpose selected down up an octave


transpose selected notes up a half-step


transpose selected notes down a half-step


transpose selected notes up harmonically


transpose selected notes down harmonically


rectify the selection (bring in line with the harmony)


Notes can also be transposed up or down any number of steps by dragging any one of the notes in a selection. If you hold the alt-key (option-key on Macintosh) when dragging, you will get harmonic transposition. Otherwise you will get simple transposition. (Note: You cannot drag both horizontally and vertically in the same action. This is by design.)



30. The final tab in the advice menu is Quotes, which are melodies borrowed from other songs or solos. Quotes are considered a form of humor in jazz improvisation, and the musician will learn to recognize when a quote will work over particular chords based on sounds.


31.  Using the Lick Generator: For the final measure of the tune, we’ll take a different approach to getting advice: Letting Impro-Visor generate a new lick for us. Select all of the slots in the last measure:


Measure 12 slots selected



Then press the Generate button on the menu bar.



The following is one example of a lick that might be generated.


A generated lick


If you don’t like this lick, press Generate again and again until you find one that you do. Here’s another example:


Another generated lick


You may alternatively generate licks by key stroke:





generate lick


32. If you press Generate with only one slot selected, the lick generate will generate from that point to the end of the chorus. If no slot is selected, it will generate the entire chorus.

33. Undoing entries:  Impro-Visor supports unlimited un-do and re-do, so if you want to back up an reconsider something that was entered or generated, then erased, use the z key to undo. Use the y key to redo what was undone. Not every action is undoable, but most involving the entry and erasure of notes are. As an alternative, the circular arrow buttons shown can be used to undo and redo:


Undo and redo buttons




undo last action


redo last undone action


34. Saving a lick: When you run across a lick that you’d like to save for future reference, you may save it in your vocabulary. Then Impro-Visor can recall that as a suggestion, transposed to the key of the moment. Pressing the u key will open the following dialog:


Lick-saving dialog


The names do not have any formal significance for indexing, but they do show up in the advice menu.


Optionally type a name, as shown, and select one of the four categories, then press either Save or Cancel. Once again, here is the meaning of the four categories:




small sequences of notes, often of uniform duration, such as eighth notes. Cells are indexed in Impro-Visor by just the first chord in the selection.


familiar-sounding sequences. As with cells, they are also indexed by just the first chord.


tend to be more complex sequences. Licks are indexed by the first two chords, or the first chord if there is only one.


a melodic fragment from a known tune or solo. As with licks, they are indexed by up to two chords. I suggest naming quotes using the tune from which they are taken.






save lick, quote, cell, idiom


35. To avoid saving a duplicate lick or quote, Impro-Visor checks new licks against all licks in the database, modulo transposition. If a duplicate is found, you will get a warning:


Duplicate lick or quote warning


No corresponding check is made for duplicate cells, as cells generally can serve more than one chord.


36.  Touching up melodies: Once you have a somewhat passable melody, it is often worthwhile to go back and edit it some more, for example, to make it “jazzier”. Before going on, consider playing the entire chorus, which includes the given eight bars, plus the four we’ve filled in, as shown below:

Completed last 4-bars


Here are some of the edits I typically make:


a.     Introduce rests: Select a note (using the shift-click technique), then type r. I tend to avoid starting a melody on the down-beat, so that is one place I would tend to introduce rests. The other place is at the end of long notes, to leave breathing space between it and the next note, and to suggest the end of a phrase.

b.    Eliminate notes, extending the previous note or rest into their place. To do this, select the note, then type key x. Similarly, x on a note or rest following another note can be used to extend the earlier note. This key can be used to make notes arbitrarily long.

c.     Add pickups: The current stored advice doesn’t have a good way to represent pickups before the beat, so they tend to not be there. I often introduce these myself, usually by adding an eighth-note a half-step below or (less often) above then note that would follow. Sometimes I use two sixteenths or a triplet instead of an eighth-note.

d.    Replace a repeated note with a different note: My personal preference is to avoid repeated notes in a phrase, although there are exceptions for effect. The lick generator will sometimes generate repeated notes, although it tries to avoid them. If I spot them, I might change the pitch on one or more notes that are repeated.

e.    Jog the melodic line in time: One way to do this is to selected the notes to be jogged. Then drag on one of the notes to the left or right, as desired. The second figure below shows the result of dragging the first phrase a half-beat to the left, which gives a different sound, partly due to the difference in treatment of notes on and off the beat in a swing style. Evidently, Thelonious Monk experimented a lot with jogging melodic lines in his compositions (such as “Straight, No Chaser”, to name just one).


Previous melody line, touched up using a-d.


Previous melody line, with the last two phrases jogged to the left.



37.  Copying, cutting and pasting melodies: To copy a melody and paste it somewhere else on the sheet:

a.     Select the notes to be copied.

b.    Press the c key (for “copy”).

c.     Select the starting slot where you wish to paste the melody.

d.    Press the v key (standard abbreviation for pasting).


Use the x key instead of c if you wish to cut the original selection. Cutting, copying, and pasting is also achievable by the following three buttons, respectively:

Cut, copy, and paste buttons

You may paste a copied selection any number of times. Use the z key
to undo recent pastings. Once you have pasted, you may wish to transpose the result or modify it in some other way. You can also click in different pitches to the same rhythmic pattern, as we’ve already described.






copy melody (to invisible clipboard)


paste copied melody (from invisible clipboard)


cut melody (and copy to invisible clipboard)


A selected melody can also be transferred to and from the textual entry area, which is not the same as the clipboard used for cut and paste. Pressing enter in the textual area will paste the melody starting at whatever slot is currently selected. This is convenient for pasting the same melody more than one place. The following commands are also useful in this context:





copy melody selection to text area


paste melody in text area onto leadsheet at selected slot


38. Note coloration: As you’ve probably noticed, notes are shown in various colors. These colors have tutorial significance, as explained below. If you don’t like coloration, you can turn it off by pressing the button labeled B/W (for “black and white”), and toggle it back by pressing Color.

Toggling note coloration


Here is the default meaning attached to the colors, of which there are four:

Note Coloration Default Options






The note is in the current chord.



The note is not in the current chord, but is complementary and compatible with it.


Approach tone

The note is not one of the above, but approaches a note in one of the above categories chromatically. This is a common device used in jazz.



This note is not one of the above. If it is a short note, it might be acceptable as a passing tone or neighboring tone. If long, it might suggest reconsideration, as it will tend to make an aural statement.



The user can easily experiment with changing to a different note, for example by using the e (up) and d (down) keys to transpose.


Impro-Visor note categorization comes from the vocabulary file. If you disagree with a categorization, it can be changed to suit by modifying the vocabulary.


39. Note entry parallax: The parallax text field in the menu bar adds the indicated number of pixels in the vertical dimension to your click position when entering notes. This can be used to accommodate variations in monitors, monitor positions, and tastes. Use a negative number to subtract pixels.

Parallax field

40. Tracker delay: When a selection is played, there is a green vertical tracking line moving from slot to slot. On some systems, the line starts ahead of the sound. This is a function of the MIDI playback, which is not under Impro-Visor’s control. To delay the line from the sound, enter the number of seconds, in decimal notation in this field.

Tracker delay field


41.   Transpose: The transpose field transposes the playback up or down the indicated number of semitones from what is written in the notation. The use envisioned is for transposing instruments. For example, for a Bb instrument (trumpet or tenor sax), use -2 and enter notes as if you were writing for that instrument. For an Eb instrument, use +3. You need to adjust the key signature manually. Transpose does not change the notation, just the playback.

Playback transposition field

: Generally, you must press return to have the edit of a text field (such as the Transpose field) take effect.

42. Key signature: The key signature can be changed in the Preference > Leadsheet menu, or by the following action: Position the mouse in the key signature area. Then slowly drag up to subtract flats and add sharps, or down to do the opposite.


Drag up or down here to change key signature



43.  Time signature: The time signature also can be changed in the Preference > Leadsheet menu, or by the following action: Position the mouse over the time signature. Then slowly drag up or down. The numerator (upper number) increases the fastest, then the denominator (lower number). The “highest” time available is 12/8 and the “lowest” is 1/1. Odd times, such as 11/4 are allowed.

Drag up or down here to change time signature


44.  Adjusting the layout: Impro-Visor tries to lay out the measures based on the note and chord density. However, it is not perfect. There are two ways to adjust the layout to suit: By control clicking on a stave, a menu will open giving you the option of setting the number of measures for that stave:

The control-click popup


By selecting the first item, you get

Single-line measure adjustment


allowing you to enter the desired number of measures. This approach is best for temporary fixes. 


45. Freezing and thawing: A more permanent layout is obtained by “freezing” the layout. Pressing the Freeze button will keep the measure distribution as it is now.

Freeze and thaw buttons

You can also specify the layout explicitly in the Chorus preference menu:

Chorus measure adjustment


Specified in this line are number of measure per line, line by line. If there are fewer numbers than there are lines, the last number is used for the remaining lines. For example, the specification above indicates 4 bars for the first line, 2 each for the next two lines, 4 for the next, then 2, then 4 for all remaining lines. Having any numbers in the Layout field is equivalent to having the layout frozen. (Since this layout really affects all choruses, it more properly belongs in the Leadsheet preferences menu.)

46. Adding choruses: Any number of choruses can be played. The current model for Impro-Visor is that there is one chorus structure, which can be played any number of choruses with different melodies. Although the chord sequence and length is the same for each chorus, the background will vary among choruses. To add a new chorus, press the page + icon:

Button for adding a new chorus



Currently, new choruses are added only following the existing choruses.


47. Removing Choruses:To remove the currently-selected chorus, press the page * icon:


Button for deleting the current chorus


Note: Removing a chorus is not undoable. The contents will be lost, unless you have previously copied it. You will be asked whether you want to delete a chorus:

Chorus deletion dialog


Choruses are referred to as “tabbed parts” because they are accessible by clicking the tabs at the top of the stave area:


Chorus tabs


The highlighted tab corresponds to the current chorus.


48. Changing the number of bars in choruses may be done with the Bars per Chorus field. Impro-Visor opens a new leadsheet with a generous number of bars. Often, this number should be shortened to accommodate the current song. If shortening would truncate chord or melody information in any chorus, a warning dialog is issued first, so that content is not inadvertently lost. Again, all choruses have the same length, so that shortening one will shorten them all. Also please note that changing the length of choruses is not undoable currently.


Chorus truncation dialog


49.  Starting a fresh leadsheet: From the File menu, select New Leadsheet, or use the shortcut control-N. This opens a new blank leadsheet, in addition to ones that may be open already. It will look like the one at the beginning of this tutorial. You may cut and paste melody and chords from one to the other. You can close one or more of the open sheets. If you have unsaved modifications, it will offer to save them first.


Unsaved modifications dialog


50.  Opening another leadsheet: This uses the current window. It does not create a new one. If there are unsaved modifications, you will be given the chance to save them.


51.   Entering chords: Let’s suppose that we start with a new leadsheet, with the first two bars as shown.


New leadsheet, with first slot selected


When chords are entered, entry always starts at the currently selected slot. The quickest way to enter one or more chords is to select the Textual Entry window, and enter the chord names. Measures can be separated either with the vertical bar, or with commas. (Don’t use slash, which has a different meaning.)

Using textual entry for chords



When return is pressed, these chords are transferred to the leadsheet:


Chords transferred to the leadsheet


52.  Slash chords (which specify a bass note after the slash) are indicated with a forward slash, such as D/E.

53.  Polychords (one chord stacked atop another) are indicated with a backward slash, such as D\Bb.

54. The textual entry field itself can be edited by using the edit features of the operating system, such as cut, copy, and paste. On a Macintosh, for example, these would be command-x, command-c, and command-v. This can be extremely handy.

55. An alternate way to transfer the chords to the leadsheet is to select the slot where the transfer is to begin after entering the chords, then press the (upper-case) B key. This is particularly convenient when the same sequence is to be transferred multiple times, as you don’t have to return to the textual entry field and press return each time.

56. To transfer chords in a selection back to the leadsheet, select the chords, then press the J key.

57. To copy, cut, and paste chords from the leadsheet: The commands are analogous to those for melody, except the shift key is held. The C key copies the chords, the X key cuts the chords, and the V key pastes the chords.




copy chords (to invisible clipboard)


paste copied chords (from invisible clipboard)


cut chords (and copy to invisible clipboard)


copy chords from selection to text area


paste chords from text area to current slot

58. To copy, cut, and paste chords and melody together from the leadsheet: The commands are analogous to those for melody, except the control key is held. The Control-c key copies melody and chords, the Control-x key cuts the melody and chords, and the Control-v key pastes the melody and chords.




copy chords and melody (to invisible clipboard)


paste copied chords and melody (from invisible clipboard)


cut chords and melody (and copy to invisible clipboard)


copy chords and melody from selection to text area


paste chords and melody from text area to current slot


59. To transpose chords, or chords and melody:





transpose chords up a half-step


transpose chords down a half-step


transpose chords and melody up a half-step


transpose chords and melody down a half-step


60. Entering melody textually: Melody is saved, and may be loaded, using a textual notation, in the same textual entry field as chords. In distinction to chords, which always begin with upper-case letters, melody notes begin with lower-case letters. A melody note consists of:


For example, entering the following melody as text:

Using textual entry for melody



Melody as entered from textual edit



61.  To transfer selected melody from the leadsheet back to the textual entry field, press the j key.

62. Both melody and chords can be entered at the same time. The two are separated into “tracks” using the upper- and lower-case distinction for chords vs. melody.


63. To transfer both selected chords and melody to the leadsheet from the textual entry, use Control-b, and to transfer back, use Control-j.


64. A summary of most of the key stroke commands can be obtained by examining the edit menu:

Edit menu contents

65. The Drawing feature allows a melody to be drawn on the screen. It is automatically adjusted to conform to chords and scales. Thus this is a feature that could be used by the musically unsophisticated to draw a melodic line with a particular shape. To use it, click the button with the pencil icon:


Drawing button


Then drag the mouse over the part of the staff at which a melody is desired, moving up and down as you go. The notes are determined by the slot spacing.

Drawing a melody with the mouse

66. Uneven spacing of chords is achieved by using single slash characters (separated from chords by blanks). The rule is that all chord and slash symbols within a bar are counted up and the space divided evenly among them. For example, to produce the following distribution, where C gets half of the space:

Uneven chord distribution


To get the distribution above, use the sequence A B C /. This is much more convenient that the alternative of clicking each indivual slot and entering the chord separately. As another example, in ¾ time, we might want the following:

Uneven chord distribution in ¾ time


To achieve the preceding, use A / B, since there are three beats to a bar. If you were to instead to use just A B, you’d get a duplet rhythm, which, while interesting, would be less common:

Duplet chord distribution in ¾ time



67.  Chords can be aligned to any slot, by using enough slashes to divide up the space. Currently 120 slots per beat are available, giving many gradations. Slashes can be combined with the NC (no-chord) symbol to achieve hits, breaks, and other effects.

68.  Leadsheet text editor: Additional meta-data, such as the key signature, tempo, and so on, will be automatically saved when a leadsheet is saved from Impro-Visor. Thus one can simply start with a fairly bare file of chords, read it into Impro-Visor, then write it back out and the meta-data will have been inserted. These items can be edited with any text editor, such as NotePad, Emacs, Word, etc. Impro-Visor itself also provides a minimal text editor that can be used to edit the file. If we open this editor from the Utilities menu, we can see the form in which Impro-Visor will save it. Changes made in this editor will not take effect until the Editor-to-Leadsheet button is pressed. These changes are not undoable, although you can always re-edit the content and press the Editor-to-Leadsheet button again.



Textual editor for the entire leadsheet


The textual editor is useful for changes to the leadsheet that can’t be done by a few simple actions, such as inserting a few bars of chords or melody at arbitrary points within. Changes made to the text can affect the number of measures in the leadsheet.





Open the textual leadsheet editor.



69. Files should be saved with extension .ls (“leadsheet”) for future loading:


Leadsheet save dialog


70.  MIDI files of the playback can be saved by selecting Export Leadsheet to MIDI from the File menu.


71.  You can control the volume of individual instruments and note entry by opening the mixer panel using this button:


Mixer panel button


72. The mixer sliders control the volume of each instrument and the note entry separately:

Mixer panel


73. MIDI recording from an external MIDI instrument can be done by clicking either the red circle button for continuous record, or pressing the Step button for step recording.

Record buttons


This feature requires a third-party MIDI program on the Macintosh, such as Mandolane ( This is because Java sound is not well supported on Macs. Also, at one point there was some kind of conflict between MIDI recording and printing on the Mac. This needs to be checked. MIDI recording is one of the least exercised features of the program.


74. The preference dialogs can be opened using this button:



Preferences button


There are several separate panels. The current preference panel can also be opened with just the p key.





Open the preference dialog.


75. Global settings control default values, such as are used when new leadsheets are opened.


Global preferences


The “Always use this” boxes over-ride the setting in the leadsheet itself. For example, if you always want the leadsheet to open with bass clef, click Bass and Always use this. Similarly, you can over-ride the instrument choices that are present in the leadsheet.


76.  Leadsheet settings control those things that are specific to the leadsheet (vs. specific choruses):

Leadsheet preferences


77.  Chorus settings control those things specific to a chorus:

Chorus preferences


Currently the Layout, however, applies to all choruses, not just this one. It is a series of numbers indicating the number of measures on each line of the leadsheet. If this is blank, Impro-Visor will adjust the layout automatically. This field can be set manually, or automatically, by toggling the Freeze button on the menu bar, as was described earlier.


78.  Style settings control the style, and permit the introduction of new sections of a chorus with different styles:


Style settings


If the leadsheet has only one style section, it may be changed by selecting a different style in the right-hand menu.

If there are multiple style sections, as indicated by the left-hand menu, then each section is set independently. Adding a new section splits the current section into two equal pieces. The boundary is then adjusted by setting the Starting Measure of the second section of the split.


79.  MIDI settings control the MIDI interface


MIDI settings



80. Drawing contour settings control the drawing interface, which is explained below.


Contour settings


81.  The lick generator controls are in a separate panel, which can be opened by clicking the right-hand light bulb button.:



Lick-generator opening button

The lick generator opens with lots of buttons and numbers, but you can ignore most of them for starters. Simply press the Generate button below the small window in the upper left. If you don’t like what you get, press again.



Lick-generator controls

Below are some samples generated by the Lick Generator for this particular setting.






More generated licks


82.  The lick grammar can be edited by selecting edit from within the lick generator. The editor functions in a manner similar to the leadsheet editor. We won’t go into how the grammar works here, but it is described in some of our publications. If you decide to change it, it might be good to save a backup copy. The contents of the grammar distributed with version 3.36 is shown below. There is additional meta-data in the upper part of the grammar file which is not shown here.



The grammar editor window


83. The style editor is a new feature in version 3. It takes the form of a spreadsheet as shown below. A description of how to use the style editor will be provided at a future time. However, there is a separate help window available in style editor for hints. At present, there is no undo/redo in the style editor, so please be careful. It is a good idea to back up your styles directory before editing.


The style editor window editing the “swing” style


The Chord popup in the style editor provides a display of all chord currently available, and allows you to hear the chord in isolation.




Open the style editor.


84. The Chord Voicing Utility allows you to sample various chord voicings in isolation. It does not allow you to enter new voicings into the vocabulary, although you can play them. Currently voicings are entered into the vocabulary file using a text editor. This utility also provides a good way to explore available chords.


Chord voicing utility


85. Style sample leadsheets have been provided. As we add styles, we will try to keep a leadsheet that exhibits the style in the leadsheets/style-samples directory. A convenient way to preview styles is to press the play button with this directory. Then you can go from one style sample to the next to get an idea of how each style sounds, without actually loading the leadsheet.


With play button pressed, click on the styles you are interested in previewing.



86. The Style extractor is a new facility that will extract a style from a MIDI file accompanied by a leadsheet file that contains the chords. Chose Extract Style (Control-e) from the Extract menu. A sample MIDI file and accompany leadsheet file has been provided in the directory style-extract in the current release. The Style Extractor has its own set of windows, that will be opened if the corresponding preference box is checked. This window gives details of how raw data is clustered to produce the style rules. However, it is not usually necessary to view the workings at this level to be able to extract a style.


One of the style extractor windows


87.  Conclusion: This concludes the Impro-Visor tutorial for the present. Please contact improvisor AT cs DOT hmc DOT edu if anything is unclear. For additional information, visit the Impro-Visor home page:


88. Acknowledgment: The software described here were designed and developed by the author, together with Martin Hunt, Stephen Jones, David Morrison, Belinda Thom, David Wolin, and Steve Gomez (Dartmouth College), Jim Herold (Cal Poly Pomona), Brandy McMenamy (Carlton College), Sayuri Seojima, and John Goodman (Open University in the U.K.). This project was supported by a Mellon Foundation Faculty Enhancement grant to Professors Keller and Thom, and by the National Science Foundation REU Program under grant Award No. 0451293 to Harvey Mudd College, and by a grant from the Baker Foundation.


89.         Glossary


Glossary of Impro-Visor Terminology




Suggestions for melodies that can be played over given chords.

approach tone

A tone not in a chord that is adjacent to a tone that is in the chord.


A colloquial term for a measure of music.


A small melodic fragment aligned with one chord.

chord symbol

A somewhat standardized notation for representing chords with a few characters.


One time through the chord changes of a piece.


A metaphor designating a place off-screen to which content is copied.

color tone

A tone not in a chord but compatible with the sound of the chord.


A user interface feature for entering information, such as preferences.


To set the numbers of measures per line in a leadsheet.

harmonic entry

Entering notes that are aligned to the current chord, rather than chromatically.


A familiar jazz melodic fragment aligned with one chord.


A file type, standing for Java archive.


A sheet with chord symbols and a melody line, which can be used to represent a song or a solo over the chords.


A short melodic fragment aligned with one or two chords.


Data that is not melody or chords directly, but which provides additional information, such as key signature, time signature, etc.


Musical Instrument Digital Interface


A device that combines several sound tracks together in specified volumes.


Abbreviation for No Chord.


The change of apparent location depending on viewing angle.


A note or a few notes placed before the downbeat of a melody.


A chord constructed of one smaller chord stacked atop another, such as a triad over a dominant chord. Polychords are noted using the back-slash \ in Impro-Visor. See also slash chord.


A melodic fragment from a familiar song or solo.


To align a melody to be consistent with a chord sequence.

slash chord

A chord consisting of a chord and a specific bass note, which may or may note be in the original chord. In Impro-Visor, slash chords are indicated with /. See also polychord.


A symbolic time at which a chord or melody note can be played. Impro-Visor currently has 120 slots per beat. A subset of the slots typically shows within the beat at a given time.


A specification of how the accompaniment (chords, bass, percussion) are generated.


To unset the numbers of measures per line in a leadsheet, leaving those numbers open to dynamic adjustment.


To raise or lower the pitch of all notes or chords in a selection.


A file containing the specification of musical material, such as scales, chords, licks, etc.


The order in which the various notes of a chord are stacked.


90.          Keystroke Summary







stops (“kills”) the playback


starts playback from the beginning

Select all of chorus


un-selects everything


select all slots

Add rest


put a rest in the selected slot


select a slot and put a rest there



transpose selected notes up an octave


transpose selected down up an octave


transpose selected notes up a half-step


transpose selected notes down a half-step


transpose selected notes up harmonically


transpose selected notes down harmonically


transpose chords up a half-step


transpose chords down a half-step


transpose chords and melody up a half-step


transpose chords and melody down a half-step

Rectification and other edits


rectify the selection (bring in line with the harmony)


reverse the selected melody


invert the selected melody



toggle enharmonics of all notes in selection


toggle enharmonics of all chords in selection


toggle enharmonics of all chords and notes in selection



undo last action


redo last undone action



generate lick


save lick, quote, cell, idiom



copy melody (to invisible clipboard)


paste copied melody (from invisible clipboard)


cut melody (and copy to invisible clipboard)


copy melody selection to text area


paste melody in text area onto leadsheet at selected slot


copy chords (to invisible clipboard)


paste copied chords (from invisible clipboard)


cut chords (and copy to invisible clipboard)


copy chords from selection to text area


paste chords from text area to current slot


copy chords and melody (to invisible clipboard)


paste copied chords and melody (from invisible clipboard)


cut chords and melody (and copy to invisible clipboard)


copy chords and melody from selection to text area


paste chords and melody from text area to current slot



open the textual leadsheet editor


open the style editor


open the preference dialog



open a new leadsheet window


open a new file in the current window


save the current file


save the current file, specifying the name


revert the current file from the saved copy


print the leadsheet


quit Impro-Visor



91.         Supplied Scale Vocabulary


The meaning of each scale is defined in the vocabulary text file vocab/My.voc, where each scale is defined relative to a tonic C. Note that some scales are synonyms for one another.





augmented heptatonic



bebop dominant

bebop locrian

bebop major

bebop minor



composite blues


diminished whole tone



dorian augmented

double harmonic lydian

double harmonic major





flat six pentatonic

flat three pentatonic


harmonic major

harmonic minor



hungarian minor



ionian pentatonic


kafi raga



leading whole tone


locrian major

locrian pentatonic



lydian #5 pentatonic

lydian augmented

lydian dominant

lydian dominant pentatonic

lydian minor

lydian pentatonic

lydian pentatonic


major blues

major flat two pentatonic

major pentatonic

malkos raga

melodic minor

melodic minor fifth mode

melodic minor second mode

minor #7 pentatonic

minor bebop

minor blues

minor hexatonic

minor pentatonic

minor seven flat five pentatonic

minor six diminished

minor six pentatonic


mixolydian pentatonic

mystery #1

neopolitan major

neopolitan major pentatonic

neopolitan minor









purvi raga


romanian minor



spanish heptatonic

super locrian

super locrian pentatonic

todi raga

vietnamese 1

vietnamese 2

whole tone

whole tone pentatonic


92.         Supplied Chord Vocabulary


The root pitch is placed in front of any of the following. Any may be followed by a slash for the bass note, or a backslash for a polychord for more combinations. The meaning of each symbol is defined in the vocabulary text file My.voc, where each chord is defined relative to a tonic C. Note that some chords are synonyms for one another. My preference for chord symbols is:










Suspended (4 by default)

7, 9, 11, 13

Dominant if used alone


I’ve introduced other symbols such as Maj or maj because people have asked for them. I don’t prefer them myself because they take up precious space on the chord line, and also take longer to type. Also, the list of possible alternatives is pretty open-ended. I introduced h as a short-hand for half-diminished, which would ordinarily be m7b5 (minor-seven, flat five) for this reason. Here is the full list of chords in the vocabulary as I write this.























































































































































































I might add more abbreviations, but if you can’t wait, just edit the My.voc. For example, if you want – to stand for minor, add the following:



                           (name C-)

                           (pronounce C minor)

                            (same Cm)



Make sure the parentheses balance, otherwise some aspects of your vocabulary could be ignored.
It is best to use a text editor such as Emacs, which flashes matching parentheses.