EXAMPLE USING EVENT LIST AND PHRASING DYNAMICS, October 2004

The following example is a minstrel tune from the 1830's. Its modern descendent is "Turkey in the Straw". The treatment is more complicated than the introductory examples. It uses more than two voices, delineates phrases with instrument changes and a special chord treatment on the last beat, and illustrates the use of a compact syntax for the events list. The actual input data will be given in a monospaced typewriter-like font. For details of command syntax and options, see the writeup .

First the tune and variants are given with several melody commands; 'zipryan' is a transcription with the original slurs indicated, 'ziphalf' has been constructed by taking every other 1/16 note and lengthening them to 1/8 notes (to accommodate the slow rise on the dulcimer samples), and 'zipbass' uses notes from the unison/octave chords on the beats for an electric string bass augmentation of the backup.

   
       tune and guitar chords

melody zipryan 
% From Ryan's Mammoth Collection (original slurs)
% chords generated by VAMP: harmony 35
T:Old Zip Coon -- Reel
M:2/4
L: 1/16
K:A
 |: (cB) |"A" AGAB A2(CD) |"A" EFEC E2(AB) |"A" c2c2 cBAB |"E" c2B2 B2(cB)  |
         |"A" AGAB A2(CD) |"A" EFEC E2(AB) |"A" cBcd ecAB |"A" c2A2 A2   :|
 |: (AB) |"A" cdef e2(ed) |"A" cdef e2(ec) |"D" defg f2(fe) |"D" defg f2(fg)  |
       |"D" agaf "A"fece |"A" cdcA "E"B2(AB) |"F#m" c2(cA) BAFA |"A" E2A2 A2 :|
/melody

mel ziphalf
% extend every other note... for dulcimer
T:Old Zip Coon -- Reel
M:2/4
L: 1/8
K:A
 |: c    |    A A  A  C   |    E E  E  A   |    c c  c A  |    c B  B  c    |
         |    A A  A  C   |    E E  E  A   |    c c  e A  |    c A  A      :|
 |: A    |    c e  e  e   |    c e  e  e   |    d f  f  f |    d f  f  f    |
         |    a a  f  c   |    c c  B  A   |    c c  B  F |    E A  A      :|
/mel

mel zipbass
%  Unison chord notes for string bass
T:Old Zip Coon -- Reel
M:2/4
L: 1/4
K:A
%% |: E,,,/8 z3/8   %% works ok, try tonal_center 04e.12
 |: z/ | A,, E,, |  A,, E,, |  A,, E,,  | E,, B,,,/ z/  |
       | A,, E,, |  A,, E,, |  A,, E,,  | A,, E,,/     :|
 |: z/ | A,, E,, |  A,, E,, |  D,, A,,, | D,, A,,,/ z/  |
      | D,, A,,, |  A,, E,, |  F,, C,,  | A,, E,,/     :|
/mel

                                      
The vamp command names and defines chord sequences which will be used later in the chord command. The convention is that lower case names refer to a full measure (4 chords) and upper case names refer to a half measure (2 chords). Variants are used at the end of the phrase (e.g. a*, e*) and at the end of the tune (e.g. a*3 and a**). The special vamps 'z1' and 'a*3' are used to accomodate the shift of the beat introduced by the lead-in notes '(cB)'. A standard musical staff representation is given for selected vamps.

       vamp/chords
vamp
%  These derive from Peter Barnes' "Interview with a Vamper"
L: 1/8  % to give 2 quarter notes (beats) per measure
K: C
 a   | [A,,,A,,] [A,^CE]   [E,,,E,,]  [A,^CE] | 
 d   | [D,,D,]   [A,D^F]   [A,,,A,,]  [A,D^F] | 
 e   | [E,,E,]   [BE^G]    [B,,,B,,]  [BE^G]  | 
% half measure chords
 A   | [A,,,A,,] [A,^CE]  |
 D   | [D,,D,]   [A,D^F]  |
 E   | [E,,E,]   [BE^G]   |
% end of phrase (silent on 8th offbeat)
 a*   | [A,,,A,,] [A,^CE]   [A,^CEA] [z] | 
 d*   | [D,,D,]   [A,D^F]   [dD^FA] [z] | 
 e*   | [E,,E,]   [BE^G]    [eE^GB] [z] | 
% end of tune (coda/cadence.. long final unison)
 a**  | [A,,,A,,] [A,^CE]   [A,,,2A,,2] | 
%
 zphr | [z4]  [z4]  [z4]  [z4] |  % silent 8 beat phrase
 zz   | [z] [z] [z] [z] |  %  single silent measure for separation
/vamp
  % and a few extra chords
vamp
L:1/8
K:A 
 z1    | [z] |                                  %% to synch with lead ins
 a*3   | [A,,,A,,] [A,CE]   [A,CEA] |           %% last a* to match z1
 f#m   | [F,,F,]   [FAC]     [C,,C,]    [FAC]   |
/vamp

                                      
Chords were assigned using the 'harmony 35' command. and modified at the end of the phrase by changing the unison-triad pair into a triad-rest pair. There is no repeat syntax defined for the chord command, so the sequences are written out twice. Note the use of z1 and a*3 to synchronize with the lead-in notes. For the final repeat, 'last' plays a prolonged chord for the final beat. To play suppress the basic vamp on the piano during the second repetition, the chord sequence 'silent' is used.


chords silent
 zphr  zphr  zphr  zphr  zphr  zphr  zphr  zphr
/chords

chords h35
  z1   a a a e*  a   a   a   a*   a a a e*  a   a   a   a*
       a a d d*  D A A E f#m a*   a a d d*  D A A E f#m a*3
/chords

chords last
  z1   a a a e*  a   a   a   a*   a a a e*  a   a   a   a*
       a a d d*  D A A E f#m a*   a a d d*  D A A E f#m a**
/chords

                                      
Accent and phrasing commands are used to define the loudness levels for chords and melody respectively. The command 'param 5 30' sets the global staccato durations for melody and chords to 5 and 30 ticks respectively. The default duration of a quarter note is 120 ticks, so this amounts to a sixteenth note on staccato chords (triads), and only a 1/96th note for melody. The accent 'zboomchuck' plays staccato triads at velocity 100 (about 'f') and uses a hypermeter '116 104 108 104 112 104 108 104' for the unisons. The range is approximately that between 'ff' and 'f'; conceivably a larger range could be used.

Short phrase commands ('mute', 'all', 'odd', 'even') are used as switches to turn instruments on and off for the melody, so that different phrases are played by different instruments or in some cases doubled by two instruments. A pattern of dynamic change within phrases and strains is set globally by 'danceff' which is added to the instrumental levels; in the first half, each phrase gets louder in the middle, in the second half, the pattern occurs over two phrases (the repeat of strain B is louder).


param   5   30

accent zboomchuck    % delayed for leadin offset, log velocity
 .100   116 .100  104 .100   108 .100  104 
 .100   112 .100  104 .100   108 .100  104 
/accent

phrase mute
 ppp 8;
/phrase
phrase odd
 ff 8; ppp 8;
/phrase
phrase even
 ppp 8; ff 8;
/phrase
phrase all
 ff 8;
/phrase

phrase danceff
  mf < ff 4 >mf 4;  <4 >4;  < ff 4> mf 4;  <4>4;  <8;>8; 8;
/phrase

                                      
Finally all the definitions are used in an event list. We illustrate the newer shorthand syntax where the program reformats the information into individual event lines and an instrument list. This example produces four repeats of the tune; 'instrument 35' is an electric bass. Immediate playback is turned off by the -1 in the options command; the 2 and 4 set the slur and chop times for the fiddle, The generate command makes a MIDI file.

Melody is played (with variations) on three instruments: fiddle, clarinet, and dulcimer. For backup, the piano plays a basic vamp and an electric bass plays the root notes of the unisons on the beat. Clarinet, piano, and bass play the first repeat. In the second repeat, the piano drops out and the clarinet and fiddle play alternate phrases. A dulcimer comes in on the third repeat, playing a simplified melody line. The piano is back on the third repeat, and the fiddle doubles the melody on even phrases. For the final time through, the fiddle, dulcimer and piano play.

options  -1  2  4

# clarinet and fiddle; dulcimer on half, bass on roots, piano
events
0 danceff
 melody zipryan
   clarinet all  odd  all  mute
   fiddle   mute even   2  all
 melody ziphalf
   dulcimer mute  2   all  even
 melody zipbass
   instrument 35 all  3    mute
 chords h35 3 last
   piano zboomchuck silent zboomchuck
/events

gen prezipff.midi