Using the Impro-Visor
Style Editor
keyed to Impro-Visor version 5.13
Bob Keller
2 April 2012
Preface
This document goes through the Impro-Visor style
specification language and its Style Editor in some
detail.
Details in slides 6-27 can be skipped on the casual
first reading. However, knowing some of the details
can make editing go faster in some cases.
The piano roll editor component is probably the
simplest to use if one desires to avoid exposure to
the language itself.
What is a Style?
By a style in Impro-Visor, we mean a
specification used to create the
background tracks from a chord
progression.
Each style is stored in its own file, with
the file name being the style and the
extension .sty
Styles vs. Grammars
Please do not confuse styles, which are used
to create accompaniment, with grammars,
which are used to create melody.
In effect, a style is a kind of grammar, but is
more limited in its current form. Also, the
results of a grammar conform to a melodic
style, but this is a different sense of the word
style.
Styles are Text Files
Styles are stored as text files, and can
be edited by an external text editor.
However, for a variety of reasons, it is
often easier to use the Style Editor
provided inside Impro-Visor.
Technical Details
that can be skipped
The non-specialist can skip the next 20 or so
slides (to Opening the Style Editor), as
these give details on how styles are
represented in text.
It is not necessary to know these details to
create or modify styles. However, it can be
helpful to know what you are seeing when
using the basic Style Editor interface.
Example Impro-Visor Style File Contents
for a style called rhythm-and-blues
(style
(name rhythm-and-blues)
(bass-high g-)
(bass-low c---)
(bass-base c--)
(swing 0.65)
(comp-swing 0.5)
(voicing-type open)
(chord-high c)
(chord-low c-)
(comments )
(bass-pattern (rules B8/3 R8/3 B8/3 B8/3 R8/3 B8/3 B8/3 R8/3 B8/3 B8/3 R8/3 B8/3) (weight 46.0))
(bass-pattern (rules B8/3 R8/3 B8/3 B8/3 R8/3 B8/3) (weight 18.0))
(bass-pattern (rules B8/3 R8/3 B8/3) (weight 10.0))
(drum-pattern
(drum Acoustic_Bass_Drum X8+32/3 R8/3+32/3 X8 R8 X8 R8 X8 R8)
(drum Closed_Hi-Hat X8/3 R8/3 X8/3 X8/3 R8/3 X8/3 X8/3 R8/3 X8/3 X8/3 R8/3 X8/3)
(drum Acoustic_Snare R4 X8 R4+8 X8 R8)
(drum Tambourine R4 X8 R4+8 X8 R8)
(weight 50.0)
)
(chord-pattern (rules X2 R8 X8 R4) (weight 50.0))
(chord-pattern (rules X2) (weight 24.0))
(chord-pattern (rules X4) (weight 100.0))
)
What a Style Specifies
Bass patterns
Drum patterns
Chord (instrument) patterns
Other meta-data
Accompaniment instrument ranges
Swing values
Voicing type for chords
What a Style Does Not Specify
Meter (4/4 vs. 3/4, etc.), even though some
styles are created to work with a specific
meter.
Instruments: The choice of chord and bass
instruments is set within the leadsheet, rather
than the style, even if the style is intended to
work with a specific instrument (e.g. banjo vs.
piano).
Pattern Selection Points
Patterns are used to create accompaniment.
For chords and bass, a pattern is selected for
each slot in which a chord is struck. (The
symbol / in the leadsheet does not count as a
chord strike in this case.)
For percussion, a pattern is selected based
upon the number of beats remaining,
independent of whether a chord is specified.
Pattern Lengths for Chords and Bass
Patterns are devised with a meter in mind usually.
For 4/4 time, it is typical to have chord and bass
patterns of length 4, 2, and 1 beats, as those are
common spans of chords. We could also include
patterns of length 8, 6, 1/2, etc.
A 3-span could be filled by one pattern of length 2
and one of length 1.
If no chord pattern exists for a given span, then the
span will be filled by just holding the chord for the
duration of the span. If no bass pattern exists, then
the bass line will be left empty.
Pattern Lengths for Drums
Usually drum patterns are all of the same
length. For 4/4 time, for example, they would
typically be of length 4 beats, although length
8 is another choice (which might be used for
some latin rhythms).
Unlike chords and bass, we dont want to
start a new drum pattern on each chord
strike.
Chord Patterns
Chord patterns are probably the simplest, and can
provide a starting point for understanding the notation
in other patterns.
Each chord pattern is a sequence of terms of the
form Xd or Rd, where d is a duration specification
(next slide), or Vn where n is a volume level (an
integer between 0 and 127).
Xd means the chord is to be struck and held for duration d.
Rd means there is a rest for duration d.
Durations
The form of a duration is exactly the same as
note durations in the leadsheet notation,
which is based on fractions of a beat, as in
music theory:
1 means a whole note (4 beats)
2 means a half note (2 beats)
4 means a quarter note (1 beat)
8 means an eighth note (1/2 beat)
16 means a sixteenth note (1/4 beat)
continued next slide
Durations, Continued
Triplets
4/3 means a quarter note triplet (2/3 of a beat)
8/3 means an eighth note triplet (1/3 of a beat)
Dotted notes
4. means a dotted quarter note (1.5 beat)
8. means a dotted eighth note (3/4 beat)
4.. means a double-dotted quarter note (1.75 beat)
continued next slide
Additive Durations
Durations can be added to get unusual
durations. For example,
4+16 means a quarter note plus a
sixteenth note in duration
4.+8/3 means a dotted quarter note plus an
eighth note triple in duration
Example Chord Pattern
(rules X2 R8 X8 R4)
rules is a keyword that distinguishes this part from other attributes of the
pattern (such as weight and push).
X2 means strike the chord and hold for half-note value.
R8 means to rest an eighth note value.
X8 means strike for an eighth note value.
R4 means to rest for a quarter note value.
In total, we have 2 + 1/2 + 1/2 + 1 = 4 beats in this pattern.
Other Parts of a Chord Pattern
(weight w) where w is a number, possibly with
a decimal fraction, determines how likely this
pattern is to get used.
(push d) where d is a duration, specifies that
this pattern is to be pushed ahead of the
beat, that is anticipated. Durations use the
same notation here as with X or R, but there
is no X or R.
Use of Weights
For a given span, all chord patterns of that
span are collected together.
Their weights are first summed to get s.
A pattern with weight w is chosen with
probability w/s.
Note that if there is only one pattern of a
given span, the weight will not matter,
because s will be exactly that weight.
Example with Weights
Suppose the patterns of duration 4 are:
(chord-pattern (rules X2 R8 X8 R4) (weight 50.0))
(chord-pattern (rules X2. X4) (weight 25.0))
(chord-pattern (rules X8 R8 X2.) (weight 25.0))
The sum of the weights is 100.
The first pattern is chosen half (50/100) the time, and the other
two patterns are each chosen one quarter (25/100) of the time.
Bass Patterns
Bass Patterns are similar to chord patterns, in that the same duration
notation is used.
As with chord patterns, you are advised to include at least one pattern
of each of several common span lengths, such as 4, 2, 1, and perhaps
8.
A longer span will be filled by using shorter spans in sequence. A span
shorter than the ones available will not be filled and no bass note will
be played.
However, bass pattern elements need to specify a function for each
note, as well as the fact that the note is being struck.
Moreover, these functions have to work over any type of chord (major,
minor, dominant, half-diminished, etc.), which leads us to our particular
way of specifying bass note choices.
Bass Pattern Elements
Bd or Xd, where d is a duration as before, mean that
the bass note of the chord is struck with duration d.
The note is often the root of the chord, but it could be
different in the case of a slash chord. For example, if
the chord is D/C, then the bass note is C, not D,
which is the root.
The reason for having both B and X is for ease in
copying a drum or chord pattern to bass.
continued
Bass Pattern Elements, continued
Cd means that some randomly-chosen Chord tone is chosen for
striking. It could be the bass tone, or any other.
Ad means that a tone that Approaches the next bass note by a
chromatic half-step is to be used.
= d means that the previous pitch is to be struck again, and held for
duration d.
Nd is not currently working, so dont use it until advised that it is ok. (It
originally meant to start the Next bass note before the next chord).
continued
Bass Pattern Elements, continued
Sd means that some randomly-chosen Scale tone is to be used.
The scale will be the first type of scale listed with the chord in
the vocabulary ([Link] file). For example, if the chord is a m7,
then the Dorian scale, based on the same root as the chords
root, will be used.
(X e d) means that the note at scale degree e will be struck for
duration d. Degree e can be any of 1, 2, 3, 4, 5, 6, 7 optionally
preceded by a # or b (for flat).
(X e d U) and (X e d D) are like (X e d), but further specify that
the next bass note is Up or Down from the previous, provided
this can be done within the allowed range.
Drum Patterns
Drum pattern elements are similar to
chord pattern elements, Xd, Rd, and
Vd.
However, unlike bass and chords, drum
patterns can consist of several patterns
for different percussion instruments
played concurrently.
Drum Pattern Example
The pattern below is from the style file shown earlier.
The word drum is a keyword indicating the pattern
for an individual instrument, the General MIDI name
or number of which must follow.
Weights for drum patterns are for the entire pattern,
similar to chord and bass patterns.
(drum-pattern
(drum Acoustic_Bass_Drum X8+32/3 R8/3+32/3 X8 R8 X8 R8 X8 R8)
(drum Closed_Hi-Hat X8/3 R8/3 X8/3 X8/3 R8/3 X8/3 X8/3 R8/3 X8/3 X8/3 R8/3 X8/3)
(drum Acoustic_Snare R4 X8 R4+8 X8 R8)
(drum Tambourine R4 X8 R4+8 X8 R8)
(weight 50.0)
)
Drum Pattern Lengths
Unlike chord and bass, drum patterns will
usually all be the same length, some multiple
of the meter (e.g. length 4 for 4 beats to a
measure).
Each individual drum sub-pattern should have
the same length. If any is shorter, it will be
padded to be the length of the longest subpattern.
Opening the Style Editor
The Style Editor can be opened from
any Leadsheet window, by either:
Pressing Control-Y
Using the Utilities menu in the menu bar.
Organization of the Style Editor
The Style Editor window is organized like a spreadsheet app.
Meta-data settings are at the top.
At the bottom is a spreadsheet with instruments as rows and
patterns as columns.
In the middle are three mirrored pattern fields, which are a
convenience for editing patterns. These represent the most
recent patterns selected.
There is also a clipboard field, but you probably wont need to
use it.
Menu bar
Meta data
Edit buttons
Clipboard
Mirrors
Spreadsheet
Style Editor Snapshot
Non-Coupling
Even though they are stacked one above the other,
the bass, chord, and drum columns are not coupled,
but rather they are selected independently.
On the other hand, all sub-patterns for percussion
instruments in one column are coupled together.
It is possible that a future version may provide for
optional coupling of selected patterns, e.g. bass with
drums, bass with chords, etc.
Coupling and Non-Coupling
Not coupled
Coupled
as one
pattern
The Use Check-boxes
Unchecking a Use box, then selecting some other
box, will result in that particular instrument row not
being saved when the style is saved. The row
remains intact for subsequent exploration as long as
the editor is open.
Beat Entries
The Beat fields are computed from the style
patterns. They are not editable.
This provides a convenient way of checking
that a pattern is of the length you think it is.
For drum patterns in a column, the only the
longest length is shown.
Adjusting Column Widths
Dragging on the border between two
column headers will cause the column
width to be enlarged or shrunk.
drag here
Selecting Individual Entries
Pressing a spreadsheet entry containing a
pattern:
Plays the pattern.
Highlights the pattern.
Causes the pattern to be mirrored in the bottom of
the three mirror fields.
The last three patterns selected are the ones
that are mirrored, most recent at bottom.
Playing a Full Drum Pattern
Shift-clicking anywhere in a column will
cause the entire drum pattern in that column,
if any, to be played.
That is, all percussion sub-patterns will be
played concurrently.
This is the quickest way to sample the sound
of a given drum pattern.
Editing Individual Entries
Selecting a spreadsheet entry highlights it.
It can then be copied, cut, or pasted over. Use the
Cell Edit icons or the usual editing shortcuts.
Double-clicking an entry opens an in-place editor for
detailed editing, results of which are effective when a
different entry is selected.
Editing can also be done in the Mirror fields. This is
usually more convenient for large patterns.
Editing a Block of Entries
A rectangular block of entries can be copied, cut, and
pasted.
To select a block, select the cell in one corner, then
shift-click the cell in the other corner.
Use the Cell Edit icons for cutting and pasting.
To paste, you must pre-select the block into which
you wish to paste. The copied pattern will not
overflow the boundaries.
Caution: No Undo (yet)
Currently the Style Editor does not have an undo/redo feature.
If you have not saved your changes, you can reload the style as
it was.
If you have saved, you will need to revert by hand, so please be
careful.
Style files are copied to the user area on the first launch of a
given version of Impro-Visor. You can get the original style file
by visiting the installation directory, which is not normally
changed by a given user.
Correcting Errors
If you make an error in specifying a pattern,
the cell(s) in question will become red.
In order to use the pattern, you must correct
it.
In the worst case, delete the whole pattern
and re-enter, although in many cases, you
can salvage part of the pattern text from the
cell or some other cell.
Assigning Weights
Once you have entered a pattern, you should
assign it a weight.
The purpose of weights is described earlier in
this document. Remember that weights apply
within all patterns of a given length.
Failure to assign a proper weight may result
in a pattern being played too frequently or too
seldom.
Swing Values
There are two swing values in the meta-data:
Melody swing is used to interpret the melody. It doesnt
matter for the style patterns themselves.
Comp swing applies to the style patterns.
Swing is only used in interpreting eighth note
durations.
A value of 0.5 means consecutive eighth notes will be given
the same duration, each 0.5 of a beat.
A value of 0.67 means the eighth note on the beat will be
given about 2/3 of a beat duration, and the eighth note off
the beat will be given 1/3.
Sometimes I use 0.55 to mean just a very slight swing.
Range Attributes
The Bass and Chord ranges are used to
select ranges for the bass notes and chord
voicings.
Each setting is a combination of a pitch and
an octave.
Octave * means the octave just above middle C.
Octave - means the octave below that, -- the one
below that, etc.
Chord Voicing Attribute
Possible chord voicings for each chord are specified in the
vocabulary file.
Each voicing has a specified type, currently one of
{open, closed, quartal, and shout}.
Specifying one of these types in the style will cause voicings of
that type to be chosen.
Typically open will be your best choice, for a full sound.
Selecting any means to choose any type of voicing. This
probably is not advised, as mixing voicings may sound strange
in playback.
Chord Played over Pattern
The sound of both Chord and Bass patterns will
depend on the type of chord and root note.
Using the Chord Played over Pattern menu you can
select the type of chord this is while editing the style.
(This also gives a quick way to sample different chord
qualities that Impro-Visor can provide.)
This selection has no effect on the patterns that are
saved.
Playing a Saved Style
In order to test how a style sounds with a
particular leadsheet, we provide co-located
convenience buttons for saving and playback.
Note that you must select the same style in
the leadsheet in order for this to work.
Press Save to save the entire style, then play
to pay the leadsheet from which the Style
Editor was opened.
Selecting Percussion Instruments
The labels at the beginning of the percussion
instrument rows can be changed by pressing
down on the label.
Select a percussion instrument from the
2level popup menu.
Using the Piano Roll Editor
The Piano Roll Editor is a separate window
that provides visual editing of one column of
the spreadsheet at a time.
Using it, you dont need to know what all the
pattern symbols stand for.
However, it does not always provide the
fastest way to edit a given style.
Opening the Piano Roll
Preferably select one cell in the
spreadsheet, the column of which is to
be examined or edited.
Either control-shift-click the cell, or
select Use Piano Roll Editor from the
Edit drop-down menu.
Opening the Piano Roll
Spreadsheet
cell selected
Piano Roll opened on Column 1
controlshiftclick
Piano Roll Contents
The piano roll is a visual representation of the style patterns in a
given column.
Each row corresponds to one instrument.
The bars on the row correspond to notes played.
The length of the bar is the time the note is on.
Gaps between bars represent rests.
The red bars on the right are stops indicating the end of the
pattern (which could end with a rest).
Playing from the Piano Roll
Clicking any of the instrument labels on the left will
play the corresponding pattern or sub-pattern.
Bass and Chord are played once. Percussion will
loop.
In the case of percussion, only the selected
instruments will be played, all together.
Toggling the Loop Percussion button can start and
stop play of the selected percussion instruments.
Playing from the Piano Roll
Single play of pattern
as last saved
(may be different from
what is in piano roll now)
Toggle
percussion
looping
Selected
percussion
patterns
Loading/Saving from the Piano Roll
One column of the spreadsheet is edited at a time.
You can save to a different column than the original, e.g. to an
empty column.
Press the corresponding buttons to save or reload.
If you do not save, your changes will not be recorded in the
Style Editor.
Adjusting Bars
Bars can be lengthened or shortened by
dragging on the blue tabs at either end.
Bars can be moved by dragging from
the middle of the bar.
To move
To lengthen or shorten
Cutting and Pasting Bars
Clicking on a bar will pop up a menu
offering to copy, cut, or delete.
Clicking on space will offer to add or
paste.
Bluish color denotes
selected bar
Clicked here
Adjusting Volume
(MIDI Velocity)
Each bar represents a note and can have its
velocity set independently.
In a style pattern, setting the volume will have
that effect on all following notes, up until the
next volume setting.
In the style editor, these settings can be
entered by inserting Vn before a strike, where
n is a number from 0 to 127.
Adjusting Volume in the Piano Roll
To adjust volumes using the piano roll,
first select a bar.
The slider and text field will indicate the
volume for that bar.
volume slider
Implied vs. Set Volumes
For any note, the volume can either be:
Set explicitly
Implied, as the same as volume of the previous note(s).
The checkbox determines which case for the selected note.
The volume can only be changed when implied is unchecked,
as shown in the previous slide.
volume implied from previous bar
Drum Example Using Piano Roll
Suppose we want to enter this drum pattern (from
[Link]
closed hi-hat cymbal
snare
bass drum
Using commands described previously, we can get
this result:
Drum Example
In the Style Editor, we would see these patterns in
the mirror fields as:
In the textual notation of the style file, we would have:
(drum-pattern
(drum Acoustic_Bass_Drum X4 R4 X4 R4)
(drum Acoustic_Snare R4 X4 R4 X4)
(drum Closed_Hi-Hat X8 X8 X8 X8 X8 X8 X8 X8)
(weight 10.0)
)
Adjusting Bass Notes
Because bass notes have the most options,
there is a separate helper editor provided,
which is opened by the button Open Bass
Bar Editor.
This dialog reveals the pattern element
attached to each bass bar.
By changing the settings in the dialog, then
pressing Set, the pattern element is set.
Bass Note Dialog
These three fields
are generated for you,
for reference.
Select one
of 6 categories
(exclude Next for now).
These buttons are only
meaningful when Pitch
is selected. 1-7 represent
scale degrees, b and #
represent flat and #,
Direction is direction to
this note.
Selection becomes
effective only when
Set is pressed.
Bass Example Using Piano Roll
Suppose we want to enter this bass pattern
(from Song for My Father, by Horace Silver).
Due to its repetitive nature, it can be achieved
by the following 1-measure pattern, where the
bass bar contents were individually edited as
shown:
B4.
(X 5 8 U)
=4.
(X 1 8 D)
Bass Example Using Piano Roll
Here is a recap of what the elements of this style
pattern mean:
B4. means the bass note of the chord, held for the duration
of a dotted quarter note.
(X 5 8 U) means the fifth scale degree, held as an eighth
note, and forced to go Up from the previous note.
=4. is the same pitch as the previous note, but with a
duration of a dotted quarter note.
(X 1 8 D) is the root of the chord (scale degree 1), with a
duration of an eighth note, forced to go Down from the
previous note.