]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/bagpipe.ly
Issue 5167/6: Changes: show \markup xxx = ... \etc assignments
[lilypond.git] / ly / bagpipe.ly
old mode 100755 (executable)
new mode 100644 (file)
index 1bf1aa5..bd10c59
-%{\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)
+
+  Corrections and additions by Julia Meihoefer and Oliver Briede
+
+  $Id: bagpipe.ly,v 1.12 2006/03/16 14:39:46 hanwen Exp $
+%}
+
+\version "2.19.22"
+
+% 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))
+  (c-flat . ,(ly:make-pitch 1 0 FLAT))
+  (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))
+  (f-flat . ,(ly:make-pitch 1 3 FLAT))
+  (fflat . ,(ly:make-pitch 1 3 FLAT))
+  (g . ,(ly:make-pitch 1 4 NATURAL))
+  (g-flat . ,(ly:make-pitch 1 4 FLAT))
+  (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 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.
+  \omit Staff.KeySignature
+  \set Staff.extraNatural = ##f
+  \key d \major
+  \accidentalStyle forget
+}
+showKeySignature = {
+  % Show the key signature e.g. for BMW compatibility.
+  \override Staff.KeySignature.stencil = #ly:key-signature-interface::print
+  \set Staff.extraNatural = ##f
+  \key d \major
+  \accidentalStyle forget
+}
+
+% Layout tweaks.
+
+\layout {
+  \context {
+    \Voice
+    % All stems go down.
+    \override Stem.direction = #DOWN
+    % All slurs and ties are on top.
+    \override Slur.direction = #UP
+    \override Tie.direction = #UP
+  }
+}
+
+% Some common timing tweaks.
+
+% Sets the autobeamer to span quarter notes only. Use for fast music.
+quarterBeaming = {
+  \set Staff.beamExceptions = #'()
+}
+halfBeaming = {
+  \set Staff.beamExceptions =
+  \beamExceptions { 8[ 8 8 8] |
+                   \tuplet 3/2 { 8[ 8 8] 8[ 8 8] 8[ 8 8] 8[ 8 8] } }
+}
+
+% 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
+  \numericTimeSignature
+  \quarterBeaming
+}
+
+% Add appropriate tweaks needed for piping grace notes to look great.
+stemspace = #(define-music-function (extent) (pair?) #{
+  \once \override Staff.Stem.X-extent = #extent
+#})
+pgrace = #(define-music-function (notes) (ly:music?) #{
+  \override Score.GraceSpacing.spacing-increment = #0
+  \override Score.Stem.beamlet-max-length-proportion = #'(0.5 . 0.5)
+  \small \grace $notes \normalsize
+  \revert Score.Stem.beamlet-default-length
+#})
+
+% Single grace notes
+grG = { \pgrace { G32 } }
+gra = { \pgrace { a32 } }
+grb = { \pgrace { b32 } }
+grc = { \pgrace { c32 } }
+grd = { \pgrace { d32 } }
+gre = { \pgrace { e32 } }
+grf = { \pgrace { f32 } }
+grg = { \pgrace { g32 } }
+grA = { \pgrace { A32 } }
+
+% Doublings
+dblG = { \pgrace { g32[ G d] } }
+dbla = { \pgrace { g32[ a d] } }
+dblb = { \pgrace { g32[ b d] } }
+dblc = { \pgrace { g32[ c d] } }
+dbld = { \pgrace { g32[ d e] } }
+dble = { \pgrace { g32[ e f] } }
+dblf = { \pgrace { g32[ f g] } }
+% These are the same as the half doublings.
+dblg = { \pgrace { g32[ f] } }
+dblA = { \pgrace { A32[ g] } }
+
+% Half doublings
+hdblG = { \pgrace { G32[ d] } }
+hdbla = { \pgrace { a32[ d] } }
+hdblb = { \pgrace { b32[ d] } }
+hdblc = { \pgrace { c32[ d] } }
+hdbld = { \pgrace { d32[ e] } }
+hdble = { \pgrace { e32[ f] } }
+hdblf = { \pgrace { f32[ g] } }
+hdblg = { \pgrace { g32[ f] } }
+hdblA = { \pgrace { A32[ g] } }
+
+% Thumb doublings
+tdblG = { \pgrace { A32[ G d] } }
+tdbla = { \pgrace { A32[ a d] } }
+tdblb = { \pgrace { A32[ b d] } }
+tdblc = { \pgrace { A32[ c d] } }
+tdbld = { \pgrace { A32[ d e] } }
+tdble = { \pgrace { A32[ e f] } }
+tdblf = { \pgrace { A32[ f g] } }
+tdblg = { \pgrace { A32[ g f] } }
+
+% Shakes / Pele
+% A few of these can't really be played and are here only for consistency.
+shakea = { \pgrace { g32[ a e a G] } }
+shakeb = { \pgrace { g32[ b e b G] } }
+shakec = { \pgrace { g32[ c e c G] } }
+shaked = { \pgrace { g32[ d e d G] } }
+wshaked = { \pgrace { g32[ d e d c] } }
+shakee = { \pgrace { g32[ e f e a] } }
+shakef = { \pgrace { g32[ f g f e] } }
+shakeg = { \pgrace { A32[ f g a] } }
+shakeA = { \pgrace { A32[ g A a] } }
+
+% Half shakes / Half Pele
+hshakea = { \pgrace { a32[ e a G] } }
+hshakeb = { \pgrace { b32[ e b G] } }
+hshakec = { \pgrace { c32[ e c G] } }
+hshaked = { \pgrace { d32[ e d G] } }
+whshaked = { \pgrace { d32[ e d c] } }
+hshakee = { \pgrace { e32[ f e a] } }
+hshakef = { \pgrace { f32[ g f e] } }
+hshakeg = { \pgrace { g32[ A g f] } }
+hshakeA = { \pgrace { A32[ g A a] } }
+
+% Thumb shakes / Thumb Peles
+tshakea = { \pgrace { A32[ a e a G] } }
+tshakeb = { \pgrace { A32[ b e b G] } }
+tshakec = { \pgrace { A32[ c e c G] } }
+tshaked = { \pgrace { A32[ d e d G] } }
+wtshaked = { \pgrace { A32[ d e d c] } }
+tshakee = { \pgrace { A32[ e f e a] } }
+tshakef = { \pgrace { A32[ f g f e] } }
+tshakeg = { \pgrace { A32[ g A g f] } }
+tshakeA = { \pgrace { A32[ g A a] } }
+
+% Slurs / G - Grace Strike
+% A few of these can't really be played and are here only for consistency.
+slura  = { \pgrace { g32[ a G] } }
+slurb  = { \pgrace { g32[ b G] } }
+slurc  = { \pgrace { g32[ c G] } }
+slurd  = { \pgrace { g32[ d G] } }
+wslurd = { \pgrace { g32[ d c] } }
+slure  = { \pgrace { g32[ e a] } }
+slurf  = { \pgrace { g32[ f e] } }
+slurg  = { \pgrace { A32[ f a] } }
+slurA  = { \pgrace { f32[ a] } }
+
+% Half slurs / Half Strike
+hslura  = { \pgrace { a32[ G] } }
+hslurb  = { \pgrace { b32[ G] } }
+hslurc  = { \pgrace { c32[ G] } }
+hslurd  = { \pgrace { d32[ G] } }
+whslurd = { \pgrace { d32[ c] } }
+hslure  = { \pgrace { e32[ a] } }
+hslurf  = { \pgrace { f32[ e] } }
+hslurg  = { \pgrace { g32[ f] } }
+hslurA  = { \pgrace { A32[ a] } }
+
+% Thumb slurs / Thumb Strike
+tslura  = { \pgrace { A32[ a G] } }
+tslurb  = { \pgrace { A32[ b G] } }
+tslurc  = { \pgrace { A32[ c G] } }
+tslurd  = { \pgrace { A32[ d G] } }
+wtslurd = { \pgrace { A32[ d c] } }
+tslure  = { \pgrace { A32[ e a] } }
+tslurf  = { \pgrace { A32[ f e] } }
+tslurg  = { \pgrace { A32[ g f] } }
+tslurA  = { \pgrace { f32[ a] } }
+
+% Catches / Half Grip
+catcha = { \pgrace { g32[ a G d G] } }
+catchb = { \pgrace { g32[ b G d G] } }
+catchc = { \pgrace { g32[ c G d G] } }
+catchd = { \pgrace { g32[ d G d G] } }
+wcatchd = { \pgrace { g32[ d G b G] } }
+catche = { \pgrace { g32[ e G d G] } }
+
+% Half catches / G - Grace Grip
+hcatcha = { \pgrace { a32[ G d G] } }
+hcatchb = { \pgrace { b32[ G d G] } }
+hcatchc = { \pgrace { c32[ G d G] } }
+hcatchd = { \pgrace { d32[ G d G] } }
+whcatchd = { \pgrace { d32[ G b G] } }
+hcatche = { \pgrace { e32[ G d G] } }
+
+% Thumb catches
+tcatcha = { \pgrace { A32[ a G d G] } }
+tcatchb = { \pgrace { A32[ b G d G] } }
+tcatchc = { \pgrace { A32[ c G d G] } }
+tcatchd = { \pgrace { A32[ d G d G] } }
+wtcatchd = { \pgrace { A32[ d G b G] } }
+tcatche = { \pgrace { A32[ e G d G] } }
+
+% Triple strikes
+% Those that cannnot be played have been omitted.
+tripleA = { \pgrace { A32[ g A g A g] } }
+
+% Throws
+thrwd     = { \pgrace { G32[ d c] } }
+Gthrwd    = { \pgrace { d32[ c] } }
+gripthrwd = { \pgrace { G32[ d G c] } }
+thrwe     = { \pgrace { e32[ a f a] } }
+wthrwe    = { \pgrace { e32[ d f d] } }
+thrwf     = { \pgrace { f32[ e g e] } }
+
+% Birls
+birl  = { \pgrace { a32[ G a G] } }
+wbirl = { \pgrace { G32[ a G] } }
+gbirl = { \pgrace { g32[ a G a G] } }
+dbirl = { \pgrace { d32[ a G a G] } }
+
+% Grips / Leumluath
+grip  = { \pgrace { G32[ d G] } }
+bgrip = { \pgrace { G32[ b G] } }
+egrip = { \pgrace { G32[ e G] } }
+
+% Taorluaths
+taor    = { \pgrace { G32[ d G e] } }
+taorjmd = { \pgrace { G32[ d a e] } }
+taorold = { \pgrace { G32[ d G a e] } }
+btaor   = { \pgrace { G32[ b G e] } }
+Gtaor   = { \pgrace { d32[ G e] } }
+taoramb = { \pgrace { G32[ d G b e] } }
+taoramc = { \pgrace { G32[ d G c e] } }
+taoramd = { \pgrace { G32[ d G c d e] } }
+
+% Crunluaths
+crun    = { \pgrace { G32[ d G e a f a ] } }
+dcrun   = { \pgrace { G32[ b G e a f a ] } }
+Gcrun   = { \pgrace { d32[ G e G f a ] } }
+crunamb = { \pgrace { G32[ d G b e b f b ] } }
+crunamc = { \pgrace { G32[ d G c e c f c ] } }
+crunamd = { \pgrace { G32[ d G c d e d f d ] } }
+crunambfosg = { \pgrace { e32[ b f b ] } }
+crunamcfosg = { \pgrace { e32[ c f c ] } }
+crunamdfosg = { \pgrace { e32[ d f d ] } }
+
+% Special piobaireachd notations
+grGcad   = { \pgrace { G16 } }
+gracad   = { \pgrace { a16 } }
+cad      = { \pgrace { \stemspace #'(0 . 0.5) g32[ e8 d32] } }
+hcad     = { \pgrace { \stemspace #'(0 . 0.5) g32[ e8] } }
+tcad     = { \pgrace { e8[ d32] } }
+thcad    = { \pgrace { e8 } }
+% This is the same as thrwe
+dre      = { \pgrace { e32[ a f a] } }
+% This is the same as thrwf
+dare     = { \pgrace { f32[ e g e] } }
+bari     = { \pgrace { e32[ G f G] } }
+dari     = { \pgrace { f32[ e g e f e] } }
+pthrwd   = { \pgrace { G16[ d32 c] } }
+darodo   = { \pgrace { G32[ d G c G] } }
+Gdarodo  = { \pgrace { d32[ G c G] } }
+pdarodo  = { \pgrace { G16[ d32 G c G16] } }
+pGdarodo = { \pgrace { d32[ G c G16] } }
+% Weird stuff from Joseph MacDonald’s book
+fifteenthcutting     = { \pgrace { G32[ d a e a f a e a d] } }
+fifteenthcuttingG    = { \pgrace { G32[ d a e G f G e G d] } }
+Gfifteenthcutting    = { \pgrace { d32[ a e a f a e a d] } }
+GfifteenthcuttingG   = { \pgrace { d32[ a e G f G e G d] } }
+seventeenthcutting   = { \pgrace { G32[ d a e a f a e a d a c] } }
+seventeenthcuttingG  = { \pgrace { G32[ d a e G f G e G d G c] } }
+Gseventeenthcutting  = { \pgrace { d32[ a e a f a e a d a c] } }
+GseventeenthcuttingG = { \pgrace { d32[ a e G f G e G d G c] } }
+barluadh   = { \pgrace { G32[ d a e a f a e a d a c a b a e a f a] } }
+barluadhG  = { \pgrace { G32[ d a e G f G e G d G c G b G e G f G] } }
+Gbarluadh  = { \pgrace { d32[ a e a f a e a d a c a b a e a f a] } }
+GbarluadhG = { \pgrace { d32[ a e G f G e G d G c G b G e G f G] } }
+% Non-gracenote piobaireachd markup.
+trebling = \markup {
+  \override #'(baseline-skip . 0.4)
+  \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 { \center-align "T" }
+txcrun = \markup { \center-align "C" }
+txtaorcrun = \markup {
+  \override #'(baseline-skip . 1.8)
+  \column {
+    \center-align "T"
+    \center-align "C"
+  }
+}
+% Turn these upside down, as in the Kilberry book.
+txtaoram = \markup { \center-align \scale #'(-1 . -1) "T" }
+txcrunam = \markup { \center-align \scale #'(-1 . -1) "C" }
+txtaorcrunam = \markup {
+  \override #'(baseline-skip . 1.8)
+  \column {
+    \center-align \scale #'(-1 . -1) "T"
+    \center-align \scale #'(-1 . -1) "C"
+  }
+}