Timing within Embellishments

While Bagpipe Music Writer Gold and Bagpipe Player are wonderful tools for many of my needs, I've had an issue with using them as a tool for beginners/learners because the programs don't play the embellishments as they ought to be played. Careful analysis reveals (and subsequent understanding of the code confirms!), that these programs play all the notes in a typical doubling at the same length.

Virtually all tutorials and other piping programs describe the timing of doublings somewhat differently. In support of this, empirical evidence shows that any intermediate piper (or better) "emphasizes" the melody note in these movements (i.e., plays it a bit longer).

While investigating the possibility of writing my own code to "properly" play tunes for learners, I realized that some of the gracenotes in the piobaireachd embellishments have different lengths and then I remembered that "new" embellishments could be added in. This suggested that the authors could modify the existing program and that might be possible to solve this problem with the program I had if I could learn how to "modify" it. It seemed that this might be faster and easier than coding a new program (at least to solve this issue!).

With a bit of looking -

In the file bmw32.ini, there are codes for the playing of every embellishment. For example:

117=dbb (CAT_EMBELISHMENTS,,N,) embellishment Gbd
118=dbc (CAT_EMBELISHMENTS,,N,) embellishment Gcd
119=dbd (CAT_EMBELISHMENTS,,N,) embellishment Gde
120=dbe (CAT_EMBELISHMENTS,,N,) embellishment Gef
121=dbf (CAT_EMBELISHMENTS,,N,) embellishment GfG

are the b, c, d, e, and f doublings. HighG is G and High A is A while all other notes are lower case.

The format of this line is further explained at the beginning of the BMW32.ini file. Please notice that there is no differentiation between the playing of gracenotes and melody notes at the end of the lines. Other lines can be found which read.

106=pelb (CAT_EMBELISHMENTS,,N,) embellishment Gbeb*g
107=pelc (CAT_EMBELISHMENTS,,N,) embellishment Gcec*g
108=peld (CAT_EMBELISHMENTS,,N,) embellishment Gded*g
63=dre (CAT_EMBELISHMENTS,,N,) embellishment a1f1a2
64=deda (CAT_EMBELISHMENTS,,N,) embellishment g1e1g2
65=tra (CAT_EMBELISHMENTS,,N,) embellishment g3d1c1

This listing of codes suggested that the timing codes are built into the embellishment in the BMW32.INI file.

Then I remembered that in every *.BWW file there is a line which reads something like:

GracenoteDurations,(20,40,30,50,100,200,800,1200,250,250,250,500,200). The manual (page 91) and/or help menu says that these timings are in milliseconds and can be set for each tune using the menus "Configure", "Set Play Options", "Gracenote Duration". In that window, you'll see the timings for "none", *, 1,2,3,4,5,6,7,8,9,0,and ~. These, according to the manual, are used for all the embellishments. "None" is a "normal" gracenote, while "*" is a longer gracenote in light music, 1 is a standard piobaireachd gracing and so on...

So, now we understand that the absolute lengths of gracenotes are defined in each *.bww file and are applied as directed in the BMW32.INI file.

(WARNING:  From this point on, per comments from the old RMMB about attitudes in changing this file, be aware that some people may consider this to be "hacking".) 

So I made a copy of BMW32.ini and renamed it to "Default Values of BMW32.ini". (Note: Experience has shown me that it is VERY IMPORTANT to keep an unedited copy of this file so that if/when you screw up, you can always go back and start over without the need to reload the whole program). Then I started playing about by altering the original timing of the embellishments in BMW32.ini to

117=dbb (CAT_EMBELISHMENTS,,N,) embellishment Gb*d
118=dbc (CAT_EMBELISHMENTS,,N,) embellishment Gc*d
119=dbd (CAT_EMBELISHMENTS,,N,) embellishment Gd*e
120=dbe (CAT_EMBELISHMENTS,,N,) embellishment Ge*f
121=dbf (CAT_EMBELISHMENTS,,N,) embellishment Gf*G

Now the gracenotes should be able to have different durations than the melody note being doubled. Then I restarted Bagpipe Music Writer/Player, brought up a BWW file of High Road to Gairloch, set GracenoteDurations,(75,150,30,50,100,200,800,1200,250,250,250,500,200), a tempo of 46 beats per minute, and altered the Smooth Playing Factor "A" to a value of 75 (i.e., 300 msec of gracenotes in a full doubling and I wanted 300-75 msec of embellishment after the downbeat. (300-75)/300*100=75.) and pressed play.

Miraculously, I had a really nice beginner's study version for playing doublings in High Road to Gairloch.

If I played the tune without the *.bww file GracenoteDurations alterations above, the overall timing of the embellishments still sound better to me because there's a bit more weight on the melody notes in the doublings (again about twice since the defaults are 20 and 40 milliseconds). For these reasons, the modified BMW32.ini file has become my "standard".

Actually I've gone quite a bit further and (notably) have made the change of

103=thrd (CAT_EMBELISHMENTS,,N,) embellishment g*dc
103=thrd (CAT_EMBELISHMENTS,,N,) embellishment g*dc*

    for my current understanding of the light throw. 

If so inclined, I could go for.

103=thrd (CAT_EMBELISHMENTS,,N,) embellishment g*dg*c

to reflect what would b accepted in teaching the heavy throw. It was interesting to note that the visual representation did not change - only the audio.

On a personal note, I'd personally like to thank/congratulate the authors of this program for providing this degree of versatility into the code. No other software offers all this flexibility. If I ever can provide a program of this sort, I would hope to be able include this degree of versatility.

Copyright S.K. MacLeod 1996-2016