]> git.donarmstrong.com Git - lilypond.git/commitdiff
Bagpipe update.
authorGraham Percival <graham@percival-music.ca>
Thu, 4 Aug 2005 23:32:42 +0000 (23:32 +0000)
committerGraham Percival <graham@percival-music.ca>
Thu, 4 Aug 2005 23:32:42 +0000 (23:32 +0000)
ChangeLog
Documentation/user/instrument-notation.itely
ly/bagpipe.ly

index 9532d93a35f2653f7ecfa09b45b6ec31898709a6..175dab54cdafa8f1c4114b366000f63bbaeb7495 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,13 @@
+2005-08-04  Graham Percival  <gperlist@shaw.ca>
+
+       * ly/bagpipe.ly: updated.
+
+       * Documentat/user/intsrument.itely: un-comment out bagpipe example.
+
 2005-08-04  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * Documentation/user/instrument-notation.itely (Bagpipe example):
-       comment out non-functioning bagpipe exapmle.
+       comment out non-functioning bagpipe example.
        (Bagpipe definitions): idem.
 
        * Documentation/topdocs/NEWS.tely (Top): add uniform-stretching example.
index 775bb81bdf40a6140b796f84c3cfb8687a672ec1..25c15ce71051e23bfe04afcc1d266347bc1ac91a 100644 (file)
@@ -1928,12 +1928,11 @@ write @code{\taor} instead of
 notes in the appropiate octaves, so you do not need to worry about
 @code{\relative} or @code{\transpose}.
 
-@ignore
-@li lypond[raggedright,verbatim,quote,notime]
+@lilypond[raggedright,verbatim,quote,notime]
 \include "bagpipe.ly"
 { \grg G4 \grg a \grg b \grg c \grg d \grg e \grg f \grA g A }
-@end lilypo nd
-@end ignore
+@end lilypond
+
 
 @node Bagpipe example
 @subsection Bagpipe example
@@ -1941,8 +1940,7 @@ notes in the appropiate octaves, so you do not need to worry about
 This is what the well known tune Amazing Grace looks like in bagpipe
 notation.
 
-@ignore 
-@lilyp ond[raggedright,verbatim,quote]
+@lilypond[raggedright,verbatim,quote]
 \include "bagpipe.ly"
 \layout {
   indent = 0.0\cm
@@ -1975,8 +1973,8 @@ notation.
   \slurd d2
   \bar "|."
 }
-@end lilypo nd
-@end ignore
+@end lilypond
+
 
 @node Ancient notation
 @section Ancient notation
index 1bf1aa5122cd0c308900458a5e32469593a4e559..f2736f0218b32dbd9a54c685774acc895bd300a1 100755 (executable)
-%{\r
-  Bagpipe music settings for Lilypond.\r
-  This file builds on work by Andrew McNabb (http://www.mcnabbs.org/andrew/)\r
-  \r
-  Substantial changes and additions made by \r
-  Sven Axelsson, the Murray Pipes & Drums of Gothenburg\r
-  (http://www.murrays.nu)\r
-  \r
-  $Id: bagpipe.ly,v 1.1 2005/08/04 21:54:58 gpercival Exp $\r
-%}\r
-\r
-\version "2.6.0"\r
-\r
-% Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde.\r
-% Flat notes used mainly in some modern music.\r
-\r
-pitchnamesBagpipe = #`(\r
-  (G . ,(ly:make-pitch 0 4 NATURAL))\r
-  (a . ,(ly:make-pitch 0 5 NATURAL))\r
-  (b . ,(ly:make-pitch 0 6 NATURAL))\r
-  (c . ,(ly:make-pitch 1 0 SHARP))\r
-  (cflat . ,(ly:make-pitch 1 0 FLAT))\r
-  (d . ,(ly:make-pitch 1 1 NATURAL))\r
-  (e . ,(ly:make-pitch 1 2 NATURAL))\r
-  (f . ,(ly:make-pitch 1 3 SHARP))\r
-  (fflat . ,(ly:make-pitch 1 3 FLAT))\r
-  (g . ,(ly:make-pitch 1 4 NATURAL))\r
-  (gflat . ,(ly:make-pitch 1 4 FLAT))\r
-  (A . ,(ly:make-pitch 1 5 NATURAL))\r
-  (B . ,(ly:make-pitch 1 6 NATURAL))\r
-  (C . ,(ly:make-pitch 2 0 SHARP))\r
-)\r
-pitchnames = \pitchnamesBagpipe\r
-#(ly:parser-set-note-names parser pitchnames)\r
-\r
-% Bagpipe music is written in something like D major. If we use\r
-% flattened notes, the flat should be shown on all instances.\r
-\r
-hideKeySignature = {\r
-  % We normally don't want to show the key signature.\r
-  \override Score.KeySignature #'print-function = ##f\r
-  \set Score.extraNatural = ##f\r
-  \set Staff.keySignature = #'((0 . 2) (3 . 2))\r
-  #(set-accidental-style 'forget)\r
-}\r
-showKeySignature = {\r
-  % Show the key signature e.g. for BMW compatibility.\r
-  \override Score.KeySignature #'print-function = #'Key_signature_interface::print\r
-  \set Score.extraNatural = ##f\r
-  \set Staff.keySignature = #'((0 . 2) (3 . 2))\r
-  #(set-accidental-style 'forget)\r
-}\r
-\r
-% Layout tweaks.\r
-\r
-\layout {\r
-  \context {\r
-    \Voice\r
-    % All stems go down.\r
-    \override Stem #'direction = #-1\r
-    % All slurs and ties are on top.\r
-    \override Slur #'direction = #1\r
-    \override Tie #'direction = #1\r
-  }\r
-}\r
-\r
-% Some common timing tweaks.\r
-\r
-% Sets the autobeamer to span quarter notes only. Use for fast music.\r
-% TODO: Needs more tweaking\r
-quarterBeaming = {\r
-  #(override-auto-beam-setting '(end * * * *) 1 4 'Staff)\r
-  #(override-auto-beam-setting '(end * * * *) 1 2 'Staff)\r
-  #(override-auto-beam-setting '(end * * * *) 3 4 'Staff)\r
-  #(override-auto-beam-setting '(end * * * *) 4 4 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 2 4 ) 1 8 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 2 4 ) 3 8 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 4 4 ) 1 8 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 4 4 ) 3 8 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 4 4 ) 5 8 'Staff)\r
-  #(revert-auto-beam-setting '(end 1 32 4 4 ) 7 8 'Staff)\r
-}\r
-halfBeaming = {\r
-  #(override-auto-beam-setting '(end * * 2 2) 1 2 'Staff)\r
-  #(override-auto-beam-setting '(end * * 2 2) 2 2 'Staff)\r
-}\r
-% Reels are in allabreve time with half note beaming.\r
-reelTime = {\r
-  \time 2/2\r
-  \halfBeaming\r
-}\r
-% 4/4 marches are written with numerical time signature and with quarter beaming.\r
-marchTime = {\r
-  \time 4/4\r
-  \override Staff.TimeSignature #'style = #'()\r
-  \quarterBeaming\r
-}\r
-\r
-% Single grace notes\r
-grG = { \grace { \small G32 } }\r
-gra = { \grace { \small a32 } }\r
-grb = { \grace { \small b32 } }\r
-grc = { \grace { \small c32 } }\r
-grd = { \grace { \small d32 } }\r
-gre = { \grace { \small e32 } }\r
-grf = { \grace { \small f32 } }\r
-grg = { \grace { \small g32 } }\r
-grA = { \grace { \small A32 } }\r
-\r
-% Doublings\r
-dblG = { \grace { \small g32[ G d] } }\r
-dbla = { \grace { \small g32[ a d] } }\r
-dblb = { \grace { \small g32[ b d] } }\r
-dblc = { \grace { \small g32[ c d] } }\r
-dbld = { \grace { \small g32[ d e] } }\r
-dble = { \grace { \small g32[ e f] } }\r
-dblf = { \grace { \small g32[ f g] } }\r
-% These are the same as the half doublings.\r
-dblg = { \grace { \small g32[ f] } }\r
-dblA = { \grace { \small A32[ g] } }\r
-\r
-% Half doublings\r
-hdblG = { \grace { \small G32[ d] } }\r
-hdbla = { \grace { \small a32[ d] } }\r
-hdblb = { \grace { \small b32[ d] } }\r
-hdblc = { \grace { \small c32[ d] } }\r
-hdbld = { \grace { \small d32[ e] } }\r
-hdble = { \grace { \small e32[ f] } }\r
-hdblf = { \grace { \small f32[ g] } }\r
-hdblg = { \grace { \small g32[ f] } }\r
-hdblA = { \grace { \small A32[ g] } }\r
-\r
-% Thumb doublings\r
-tdblG = { \grace { \small A32[ G d] } }\r
-tdbla = { \grace { \small A32[ a d] } }\r
-tdblb = { \grace { \small A32[ b d] } }\r
-tdblc = { \grace { \small A32[ c d] } }\r
-tdbld = { \grace { \small A32[ d e] } }\r
-tdble = { \grace { \small A32[ e f] } }\r
-tdblf = { \grace { \small A32[ f g] } }\r
-tdblg = { \grace { \small A32[ g f] } }\r
-\r
-% Shakes\r
-% A few of these can't really be played and are here only for consistency.\r
-shakea = { \grace { \small g32[ a d a G] } }\r
-shakeb = { \grace { \small g32[ b d b G] } }\r
-shakec = { \grace { \small g32[ c d c G] } }\r
-shaked = { \grace { \small g32[ d e d G] } }\r
-shakee = { \grace { \small g32[ e f e a] } }\r
-shakef = { \grace { \small g32[ f g f a] } }\r
-shakeg = { \grace { \small A32[ f g a] } }\r
-shakeA = { \grace { \small A32[ g A a] } }\r
-\r
-% Half shakes\r
-hshakea = { \grace { \small a32[ d a G] } }\r
-hshakeb = { \grace { \small b32[ d b G] } }\r
-hshakec = { \grace { \small c32[ d c G] } }\r
-hshaked = { \grace { \small d32[ e d G] } }\r
-hshakee = { \grace { \small e32[ f e a] } }\r
-hshakef = { \grace { \small f32[ g f a] } }\r
-hshakeg = { \grace { \small g32[ f g a] } }\r
-hshakeA = { \grace { \small A32[ g A a] } }\r
-\r
-% Thumb shakes\r
-tshakea = { \grace { \small A32[ a d a G] } }\r
-tshakeb = { \grace { \small A32[ b d b G] } }\r
-tshakec = { \grace { \small A32[ c d c G] } }\r
-tshaked = { \grace { \small A32[ d e d G] } }\r
-tshakee = { \grace { \small A32[ e f e a] } }\r
-tshakef = { \grace { \small A32[ f g f a] } }\r
-tshakeg = { \grace { \small A32[ f g a] } }\r
-tshakeA = { \grace { \small A32[ g A a] } }\r
-\r
-% Slurs\r
-% A few of these can't really be played and are here only for consistency.\r
-slura = { \grace { \small g32[ a G] } }\r
-slurb = { \grace { \small g32[ b G] } }\r
-slurc = { \grace { \small g32[ c G] } }\r
-slurd = { \grace { \small g32[ d G] } }\r
-slure = { \grace { \small g32[ e a] } }\r
-slurf = { \grace { \small g32[ f a] } }\r
-slurg = { \grace { \small A32[ f a] } }\r
-slurA = { \grace { \small f32[ a] } }\r
-\r
-% Half slurs\r
-hslura = { \grace { \small a32[ G] } }\r
-hslurb = { \grace { \small b32[ G] } }\r
-hslurc = { \grace { \small c32[ G] } }\r
-hslurd = { \grace { \small d32[ G] } }\r
-hslure = { \grace { \small e32[ a] } }\r
-hslurf = { \grace { \small f32[ a] } }\r
-hslurg = { \grace { \small g32[ a] } }\r
-hslurA = { \grace { \small A32[ a] } }\r
-\r
-% Thumb slurs\r
-tslura = { \grace { \small A32[ a G] } }\r
-tslurb = { \grace { \small A32[ b G] } }\r
-tslurc = { \grace { \small A32[ c G] } }\r
-tslurd = { \grace { \small A32[ d a] } }\r
-tslure = { \grace { \small A32[ e a] } }\r
-tslurf = { \grace { \small A32[ f a] } }\r
-tslurg = { \grace { \small A32[ f a] } }\r
-tslurA = { \grace { \small f32[ a] } }\r
-\r
-% Catches\r
-catcha = { \grace { \small a32[ G d G] } }\r
-catchb = { \grace { \small b32[ G d G] } }\r
-catchc = { \grace { \small c32[ G d G] } }\r
-catchd = { \grace { \small d32[ G b G] } }\r
-catche = { \grace { \small e32[ G d G] } }\r
-\r
-% G-grace catches\r
-gcatcha = { \grace { \small g32[ a G d G] } }\r
-gcatchb = { \grace { \small g32[ b G d G] } }\r
-gcatchc = { \grace { \small g32[ c G d G] } }\r
-gcatchd = { \grace { \small g32[ d G b G] } }\r
-gcatche = { \grace { \small g32[ e G d G] } }\r
-\r
-% Thumb catches\r
-tcatcha = { \grace { \small A32[ a G d G] } }\r
-tcatchb = { \grace { \small A32[ b G d G] } }\r
-tcatchc = { \grace { \small A32[ c G d G] } }\r
-tcatchd = { \grace { \small A32[ d G b G] } }\r
-tcatche = { \grace { \small A32[ e G d G] } }\r
-\r
-% Throws\r
-thrwd     = { \grace { \small G32[ d c] } }\r
-Gthrwd    = { \grace { \small d32[ c] } }\r
-gripthrwd = { \grace { \small G32[ d G c] } }\r
-thrwf     = { \grace { \small f32[ e g e] } }\r
-\r
-% Birls\r
-birl  = { \grace { \small a32[ G a G] } }\r
-wbirl = { \grace { \small G32[ a G] } }\r
-gbirl = { \grace { \small g32[ a G a G] } }\r
-dbirl = { \grace { \small d32[ a G a G] } }\r
-\r
-% Grips\r
-grip  = { \grace { \small G32[ d G] } }\r
-dgrip = { \grace { \small G32[ b G] } }\r
-egrip = { \grace { \small G32[ e G] } }\r
-\r
-% Taorluaths\r
-taor    = { \grace { \small G32[ d G e] } }\r
-dtaor   = { \grace { \small G32[ b G e] } }\r
-Gtaor   = { \grace { \small d32[ G e] } }\r
-taoramb = { \grace { \small G32[ d G b e] } }\r
-taoramc = { \grace { \small G32[ d G c e] } }\r
-taoramd = { \grace { \small G32[ d G c d e] } }\r
-\r
-% Crunluaths\r
-crun    = { \grace { \small G32[ d G e a f a ] } }\r
-dcrun   = { \grace { \small G32[ b G e a f a ] } }\r
-Gcrun   = { \grace { \small d32[ G e G f a ] } }\r
-crunamb = { \grace { \small G32[ d G b e b f b ] } }\r
-crunamc = { \grace { \small G32[ d G c e c f c ] } }\r
-crunamd = { \grace { \small G32[ d G c d e d f d ] } }\r
-\r
-% Special piobaireachd notations\r
-grGcad  = { \grace { \small G16 } }\r
-gracad  = { \grace { \small a16 } }\r
-cad     = { \grace { \small g32[ e8 d32] } }\r
-hcad    = { \grace { \small g32[ e8] } }\r
-dre     = { \grace { \small e32[ a f a] } }\r
-% This is the same as thrwf\r
-dare    = { \grace { \small f32[ e g e] } }\r
-bari    = { \grace { \small e32[ G f G] } }\r
-dari    = { \grace { \small f32[ e g e f e] } }\r
-pthrwd  = { \grace { \small G16[ d32 c] } }\r
-darodo  = { \grace { \small G32[ d G c G] } }\r
-Gdarodo = { \grace { \small d32[ G c G] } }\r
-% Non-gracenote piobaireachd markup.\r
-trebling = \markup { \r
-  \override #'(baseline-skip . 0.3)\r
-  \column { \r
-    \musicglyph #"scripts.tenuto" \r
-    \musicglyph #"scripts.tenuto" \r
-    \musicglyph #"scripts.tenuto" \r
-  }\r
-}\r
-% Abbreviated notation common in piobaireachd scores.\r
-% TODO: Make sure these are put on a fixed Y-position.\r
-txtaor = \markup { "T" }\r
-txcrun = \markup { "C" }\r
-txtaorcrun = \markup { \column { "T" "C" } }\r
-% TODO: These characters should be shown upside down.\r
-% Use a postscript markup command for this.\r
-txtaoram = \markup { "T" }\r
-txcrunam = \markup { "C" }\r
-txtaorcrunam = \markup { \column { "T" "C" } }\r
+%{
+  Bagpipe music settings for Lilypond.
+  This file builds on work by Andrew McNabb (http://www.mcnabbs.org/andrew/)
+  
+  Substantial changes and additions made by 
+  Sven Axelsson, the Murray Pipes & Drums of Gothenburg
+  (http://www.murrays.nu)
+  
+  $Id: bagpipe.ly,v 1.2 2005/08/04 23:32:42 gpercival Exp $
+%}
+
+\version "2.6.0"
+
+% Notes of the scale of the Great Highland Bagpipe. Extra high notes for bombarde.
+% Flat notes used mainly in some modern music.
+
+pitchnamesBagpipe = #`(
+  (G . ,(ly:make-pitch 0 4 NATURAL))
+  (a . ,(ly:make-pitch 0 5 NATURAL))
+  (b . ,(ly:make-pitch 0 6 NATURAL))
+  (c . ,(ly:make-pitch 1 0 SHARP))
+  (cflat . ,(ly:make-pitch 1 0 FLAT))
+  (d . ,(ly:make-pitch 1 1 NATURAL))
+  (e . ,(ly:make-pitch 1 2 NATURAL))
+  (f . ,(ly:make-pitch 1 3 SHARP))
+  (fflat . ,(ly:make-pitch 1 3 FLAT))
+  (g . ,(ly:make-pitch 1 4 NATURAL))
+  (gflat . ,(ly:make-pitch 1 4 FLAT))
+  (A . ,(ly:make-pitch 1 5 NATURAL))
+  (B . ,(ly:make-pitch 1 6 NATURAL))
+  (C . ,(ly:make-pitch 2 0 SHARP))
+)
+pitchnames = \pitchnamesBagpipe
+#(ly:parser-set-note-names parser pitchnames)
+
+% Bagpipe music is written in something like D major. If we use
+% flattened notes, the flat should be shown on all instances.
+
+hideKeySignature = {
+  % We normally don't want to show the key signature.
+  \override Staff.KeySignature #'print-function = ##f
+  \set Staff.extraNatural = ##f
+  \key d \major
+  #(set-accidental-style 'forget)
+}
+showKeySignature = {
+  % Show the key signature e.g. for BMW compatibility.
+  \override Staff.KeySignature #'print-function = #'Key_signature_interface::print
+  \set Staff.extraNatural = ##f
+  \key d \major
+  #(set-accidental-style 'forget)
+}
+
+% Layout tweaks.
+
+\layout {
+  \context {
+    \Voice
+    % All stems go down.
+    \override Stem #'direction = #-1
+    % All slurs and ties are on top.
+    \override Slur #'direction = #1
+    \override Tie #'direction = #1
+  }
+}
+
+% Some common timing tweaks.
+
+% Sets the autobeamer to span quarter notes only. Use for fast music.
+% TODO: Needs more tweaking
+quarterBeaming = {
+  #(override-auto-beam-setting '(end * * * *) 1 4 'Staff)
+  #(override-auto-beam-setting '(end * * * *) 1 2 'Staff)
+  #(override-auto-beam-setting '(end * * * *) 3 4 'Staff)
+  #(override-auto-beam-setting '(end * * * *) 4 4 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 2 4 ) 1 8 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 2 4 ) 3 8 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 4 4 ) 1 8 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 4 4 ) 3 8 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 4 4 ) 5 8 'Staff)
+  #(revert-auto-beam-setting '(end 1 32 4 4 ) 7 8 'Staff)
+}
+halfBeaming = {
+  #(override-auto-beam-setting '(end * * 2 2) 1 2 'Staff)
+  #(override-auto-beam-setting '(end * * 2 2) 2 2 'Staff)
+}
+% Reels are in allabreve time with half note beaming.
+reelTime = {
+  \time 2/2
+  \halfBeaming
+}
+% 4/4 marches are written with numerical time signature and with quarter beaming.
+marchTime = {
+  \time 4/4
+  \override Staff.TimeSignature #'style = #'()
+  \quarterBeaming
+}
+
+% Single grace notes
+grG = { \grace { \small G32 } }
+gra = { \grace { \small a32 } }
+grb = { \grace { \small b32 } }
+grc = { \grace { \small c32 } }
+grd = { \grace { \small d32 } }
+gre = { \grace { \small e32 } }
+grf = { \grace { \small f32 } }
+grg = { \grace { \small g32 } }
+grA = { \grace { \small A32 } }
+
+% Doublings
+dblG = { \grace { \small g32[ G d] } }
+dbla = { \grace { \small g32[ a d] } }
+dblb = { \grace { \small g32[ b d] } }
+dblc = { \grace { \small g32[ c d] } }
+dbld = { \grace { \small g32[ d e] } }
+dble = { \grace { \small g32[ e f] } }
+dblf = { \grace { \small g32[ f g] } }
+% These are the same as the half doublings.
+dblg = { \grace { \small g32[ f] } }
+dblA = { \grace { \small A32[ g] } }
+
+% Half doublings
+hdblG = { \grace { \small G32[ d] } }
+hdbla = { \grace { \small a32[ d] } }
+hdblb = { \grace { \small b32[ d] } }
+hdblc = { \grace { \small c32[ d] } }
+hdbld = { \grace { \small d32[ e] } }
+hdble = { \grace { \small e32[ f] } }
+hdblf = { \grace { \small f32[ g] } }
+hdblg = { \grace { \small g32[ f] } }
+hdblA = { \grace { \small A32[ g] } }
+
+% Thumb doublings
+tdblG = { \grace { \small A32[ G d] } }
+tdbla = { \grace { \small A32[ a d] } }
+tdblb = { \grace { \small A32[ b d] } }
+tdblc = { \grace { \small A32[ c d] } }
+tdbld = { \grace { \small A32[ d e] } }
+tdble = { \grace { \small A32[ e f] } }
+tdblf = { \grace { \small A32[ f g] } }
+tdblg = { \grace { \small A32[ g f] } }
+
+% Shakes
+% A few of these can't really be played and are here only for consistency.
+shakea = { \grace { \small g32[ a d a G] } }
+shakeb = { \grace { \small g32[ b d b G] } }
+shakec = { \grace { \small g32[ c d c G] } }
+shaked = { \grace { \small g32[ d e d G] } }
+shakee = { \grace { \small g32[ e f e a] } }
+shakef = { \grace { \small g32[ f g f a] } }
+shakeg = { \grace { \small A32[ f g a] } }
+shakeA = { \grace { \small A32[ g A a] } }
+
+% Half shakes
+hshakea = { \grace { \small a32[ d a G] } }
+hshakeb = { \grace { \small b32[ d b G] } }
+hshakec = { \grace { \small c32[ d c G] } }
+hshaked = { \grace { \small d32[ e d G] } }
+hshakee = { \grace { \small e32[ f e a] } }
+hshakef = { \grace { \small f32[ g f a] } }
+hshakeg = { \grace { \small g32[ f g a] } }
+hshakeA = { \grace { \small A32[ g A a] } }
+
+% Thumb shakes
+tshakea = { \grace { \small A32[ a d a G] } }
+tshakeb = { \grace { \small A32[ b d b G] } }
+tshakec = { \grace { \small A32[ c d c G] } }
+tshaked = { \grace { \small A32[ d e d G] } }
+tshakee = { \grace { \small A32[ e f e a] } }
+tshakef = { \grace { \small A32[ f g f a] } }
+tshakeg = { \grace { \small A32[ f g a] } }
+tshakeA = { \grace { \small A32[ g A a] } }
+
+% Slurs
+% A few of these can't really be played and are here only for consistency.
+slura = { \grace { \small g32[ a G] } }
+slurb = { \grace { \small g32[ b G] } }
+slurc = { \grace { \small g32[ c G] } }
+slurd = { \grace { \small g32[ d G] } }
+slure = { \grace { \small g32[ e a] } }
+slurf = { \grace { \small g32[ f a] } }
+slurg = { \grace { \small A32[ f a] } }
+slurA = { \grace { \small f32[ a] } }
+
+% Half slurs
+hslura = { \grace { \small a32[ G] } }
+hslurb = { \grace { \small b32[ G] } }
+hslurc = { \grace { \small c32[ G] } }
+hslurd = { \grace { \small d32[ G] } }
+hslure = { \grace { \small e32[ a] } }
+hslurf = { \grace { \small f32[ a] } }
+hslurg = { \grace { \small g32[ a] } }
+hslurA = { \grace { \small A32[ a] } }
+
+% Thumb slurs
+tslura = { \grace { \small A32[ a G] } }
+tslurb = { \grace { \small A32[ b G] } }
+tslurc = { \grace { \small A32[ c G] } }
+tslurd = { \grace { \small A32[ d a] } }
+tslure = { \grace { \small A32[ e a] } }
+tslurf = { \grace { \small A32[ f a] } }
+tslurg = { \grace { \small A32[ f a] } }
+tslurA = { \grace { \small f32[ a] } }
+
+% Catches
+catcha = { \grace { \small a32[ G d G] } }
+catchb = { \grace { \small b32[ G d G] } }
+catchc = { \grace { \small c32[ G d G] } }
+catchd = { \grace { \small d32[ G b G] } }
+catche = { \grace { \small e32[ G d G] } }
+
+% G-grace catches
+gcatcha = { \grace { \small g32[ a G d G] } }
+gcatchb = { \grace { \small g32[ b G d G] } }
+gcatchc = { \grace { \small g32[ c G d G] } }
+gcatchd = { \grace { \small g32[ d G b G] } }
+gcatche = { \grace { \small g32[ e G d G] } }
+
+% Thumb catches
+tcatcha = { \grace { \small A32[ a G d G] } }
+tcatchb = { \grace { \small A32[ b G d G] } }
+tcatchc = { \grace { \small A32[ c G d G] } }
+tcatchd = { \grace { \small A32[ d G b G] } }
+tcatche = { \grace { \small A32[ e G d G] } }
+
+% Throws
+thrwd     = { \grace { \small G32[ d c] } }
+Gthrwd    = { \grace { \small d32[ c] } }
+gripthrwd = { \grace { \small G32[ d G c] } }
+thrwf     = { \grace { \small f32[ e g e] } }
+
+% Birls
+birl  = { \grace { \small a32[ G a G] } }
+wbirl = { \grace { \small G32[ a G] } }
+gbirl = { \grace { \small g32[ a G a G] } }
+dbirl = { \grace { \small d32[ a G a G] } }
+
+% Grips
+grip  = { \grace { \small G32[ d G] } }
+dgrip = { \grace { \small G32[ b G] } }
+egrip = { \grace { \small G32[ e G] } }
+
+% Taorluaths
+taor    = { \grace { \small G32[ d G e] } }
+dtaor   = { \grace { \small G32[ b G e] } }
+Gtaor   = { \grace { \small d32[ G e] } }
+taoramb = { \grace { \small G32[ d G b e] } }
+taoramc = { \grace { \small G32[ d G c e] } }
+taoramd = { \grace { \small G32[ d G c d e] } }
+
+% Crunluaths
+crun    = { \grace { \small G32[ d G e a f a ] } }
+dcrun   = { \grace { \small G32[ b G e a f a ] } }
+Gcrun   = { \grace { \small d32[ G e G f a ] } }
+crunamb = { \grace { \small G32[ d G b e b f b ] } }
+crunamc = { \grace { \small G32[ d G c e c f c ] } }
+crunamd = { \grace { \small G32[ d G c d e d f d ] } }
+
+% Special piobaireachd notations
+grGcad  = { \grace { \small G16 } }
+gracad  = { \grace { \small a16 } }
+cad     = { \grace { \small g32[ e8 d32] } }
+hcad    = { \grace { \small g32[ e8] } }
+dre     = { \grace { \small e32[ a f a] } }
+% This is the same as thrwf
+dare    = { \grace { \small f32[ e g e] } }
+bari    = { \grace { \small e32[ G f G] } }
+dari    = { \grace { \small f32[ e g e f e] } }
+pthrwd  = { \grace { \small G16[ d32 c] } }
+darodo  = { \grace { \small G32[ d G c G] } }
+Gdarodo = { \grace { \small d32[ G c G] } }
+% Non-gracenote piobaireachd markup.
+trebling = \markup { 
+  \override #'(baseline-skip . 0.3)
+  \column { 
+    \musicglyph #"scripts.tenuto" 
+    \musicglyph #"scripts.tenuto" 
+    \musicglyph #"scripts.tenuto" 
+  }
+}
+% Abbreviated notation common in piobaireachd scores.
+% TODO: Make sure these are put on a fixed Y-position.
+txtaor = \markup { "T" }
+txcrun = \markup { "C" }
+txtaorcrun = \markup { \column { "T" "C" } }
+% TODO: These characters should be shown upside down.
+% Use a postscript markup command for this.
+txtaoram = \markup { "T" }
+txcrunam = \markup { "C" }
+txtaorcrunam = \markup { \column { "T" "C" } }