- Notifications
You must be signed in to change notification settings - Fork0
abcm2ps decorations to add support for variation notation modeled after Samuel Bayard's
License
olets/bayard-variations
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Theseabcm2ps "decos" add support for above the staff variation-marking notation toabc.
Click here to download a zip of these files.
For years in my fiddle transcriptions I marked variations with a superscripted letter (in abc, this was"^a..."
). Finally I came across that exact idea in print in Jeff Todd Titon'sOld Time Kentucky Fiddle Tunes. Titon says he "and other scholars" trace the idea back toSamuel Bayard, in his 1944Hill Country Tunes: Instrumental Folk Music of Southwestern Pennsylvania. Bayard's notation was actually nicer, as it showed exactly which notes were varied (my crop):
After I'd been working on PostScript decorations to emulate Bayard for a while, Beáta Salamon'sMagyar népzenei dallamgyűjtemény came out… and what did I find in it but beautiful Bayard-type variation notation!
Thesebayard-variations are my own expansion on Bayard's and Salamon's designs.
- Introduction
- Usage
- Variation decoration types
- Customization
- Included decorations
- Design your own
- Architecture
- If something goes wrong
- License
Download at leastbayard-variations.fmt
. Run abcm2ps with
abcm2ps INPUTFILE.abc -F bayard-variations.fmt
(See theabcm2ps readme for additional options.)
Usehbv-deco-chords.fmt
to support writing guitar chords (e.g."A"
) with stacked variation decorations (seebelow). Simply download the file in addition tobayard-variations.fmt
, and uncomment (remove the line-initial%
from) the first line ofbayard-variations.fmt
.
var-x
!var-x(! y0 AAA BBB !var-x)!
prints
x-------,
over the notes AAA BBBvar-xy
!var-xy(! y0 AAA BBB !var-xy)!
prints
x, y----,
over the notes and so on forvar-xyz
,var-xyz1
, andvar-xyz12
var
!var(! y0 AAA BBB !var)!
prints
,-------,
over the notesvarcontinues-x
!varcontinues-x(! y0 AAA BBB !varcontinues-x)!
prints
x---------
over the notes (e.g. for use when a variation extends beyond the end of a staff).varcontinues-x is intended to pair with varcontinuedvarcontinues
!varcontinues(! y0 AAA BBB !varcontinues)!
prints
,---------
over the notes (e.g. for use when a variation extends beyond the end of a staff).varcontinues is intended to pair with varcontinuedvarcontinued
!varcontinued(! y0 AAA BBB !varcontinued)!
prints
--------,
over the notes (e.g. for use when a variation started before the current staff.varcontinued is intended to pair with either varcontinues-x or varcontinues
Those decorations don't stack nicely with each other or with repeats (e.g.[1 ... ]
). If you need to mark overlapping variations, or need to use these decorations within a repeat, use the_stack
variants:
var-x_stack
!var-x_stack! !var-y_stack! y0 AAA !var-y_stack)! BBB !var-x_stack)!
prints
y----,
overAAA
and, above that,x---------,
overAAA BBB
varcont_stack
!varcont_stack(! !var-x_stack! AAA !var-x_stack)! BBB !varcont_stack)!
prints
x----,
overAAA
and, over that, prints-----------,
overAAA BBB
Notes:
guitar chords (in
""
quotations)don't look good with stacked variationmarkers. Use the includedhbv-deco-chords.fmt
to get around this - include that.fmt
and replace any!var..._stack(! y0 "X" ... !var..._stack)!
with
!var..._stack(! y0 !X! y0 ... !var..._stack)!
The first line of
bayard-variations.fmt
importshbv-deco-chords.fmt
, commented out. The easiest way to add!chord!
support, if you don't already have a base.fmt
file to import both files into, is to download both.fmt
s, put them in the same folder, and uncomment that first line ofbayard-variations.fmt
.I recommend always putting a
y0
after the opening deco of a long decoration,e.g. after!var-x(!
. It's sometimes a good idea to put one after the closingdeco!var-x)!
and, in the case of variation markers stacked above guitar chords, after the!X!
stackable guitar deco.
I use Monaco 9 for the label and a thin 60%-black dashed line
- The font is defined before every occurrence of the postscript command
show
- The thickness of the line is defined before every
SLW
(abcm2ps shorthand forthe postscript commandsetlinewidth
) (default:0.5
) - The darkness of the line is defined before every non-zero
setgray
(default:0.6
) - The dash is defined before every non-
[]
setdash
(default:[3 5]
, which is 3pxof line followed by 5px of space)
The line could be made e.g. solid and black by commenting out allsetdash
andsetgray
.
I've included a lot of decorations, which should cover most needs:
No referent:
- the unnamed decoration
var
Single referent:
- single-letter decorations
var-a
tovar-z
- single-letter stackable decorations
var-a_stack
tovar-z_stack
- single-number decorations
var-0
tovar-9
- single-number stackable decorations
var-0_stack
tovar-9_stack
- an asterisk decoration
var-*
Two referents:
- two-letter decorations
var-ab
tovar-yz
for non-overlapping sequential pairs (e.g.var-bc
, notvar-ac
) - two-number decorations
var-12
,23
,34
,45
- assorted other two-letter decorations I've needed (
var-is
,cm
,be
,fj
,pq
,bd
,ei
,z1
) - assorted two-letter stackable decorations I've needed (
var-bc_stack
,de
,ef
,gh
,ij
,jk
,lm
,no
,pq
,z1
)
Three referents:
- three-letter decorations
var-abc
toklm
(again, in non-overlapping sequential triplets - soabc
anddef
but notbcd
orcde
(though in that particular case, see immediately below)) - assorted other three-letter decorations I've needed (
var-bcd
,cde
,cgh
,cdj
,mno
,rst
,stu
,tuv
) - assorted stackable three-letter decorations I've needed (
var-ghi_stack
,opq
,stu
,tuv
,vwx
)
More than three referents:
- some four-letter decorations I've needed (
var-abcd
,klmn
,lmno
,vwxy
,wxyz
) - some stackable four-letter decorations (
var-efgh_stack
,fghi
) - some five-letter decorations (
var-abcde
,defgh
,aemno
)
Open-ended (no referent, or single- or multiple-referent):
- the open-ended unnamed decoration
varcontinues
- single-letter open-ended decorations
varcontinues-a
tovarcontinues-h
- stackable unnamed open-ended decoration
varcons_stack
- the open-start decoration
varcontinued
- stackable open-start decoration
varcont_stack
Special:
var-first
decoration for a first-time-through variationvar-last
decoration for a last-time-through variation
If that doesn't meet your needs, you can always
You'll need to add three lines per decoration, withinbeginps...endps
:
/var-[name]{/varname ([marker text] def [1var/[2-5]vars]}!deco var-[name]( [5 for normal, 7 for stacking] - 17 0 0deco var-[name]) ["] var-[name] 17 0 0
One-Character Example:var-a
/var-a{/varname (a) def 1var}!deco var-a( 5 - 17 0 0deco var-a) 5 var-a 17 0 0
Two-Character Example:var-ab
/var-a{/varname (a, b) def 2vars}!deco var-ab( 5 - 17 0 0deco var-ab) 5 var-ab 17 0 0
Three-Character Example:var-abc
/var-abc{/varname (a, b, c) def 3vars}!deco var-abc( 5 - 17 0 0deco var-abc) 5 var-abc 17 0 0
Four-Character Example:var-abcd
/var-abcd{/varname(a, b, c, d) def 4vars}!deco var-abcd( 5 - 17 0 0deco var-abcd) 5 var-abc 17 0 0
Five-Character Example:var-abcde
/var-abcde{/varname (a, b, c, d, e) def 5vars}!deco var-abcde( 5 - 17 0 0deco var-abcde) 5 var-abcde 17 0 0
Custom Example:var-custom
/var-custom{/varname (a. bc!!) def 3vars}!deco var-custom( 5 - 17 0 0deco var-custom) 5 var-custom 17 0 0
Custom Stackable Example:var-custom2
/var-custom_stack{/varname (a. bc!!) def 3vars}!deco var-custom_stack( 7 - 17 0 0deco var-custom_stack) 7 var-custom_stack 17 0 0
Note:for custom variables, by default your marker text can be one, fourseven, ten, or thirteen characters long (using 1var, 2vars, 3vars, 4vars, and5vars, respectively). For marker text of other lengths you'll need to customize thevariable<adjust>
, which determines the horizontal placement of the marker line's start.
Here's the logic
Named, bracketing at end
decovar-[x[y[z[1[2]]]]][_stack](
and
decovar-[x[y[z[1[2]]]]][_stack])
depend on
/var-x
depends on
/[#]vars
depends on
/variation
Unnamed, bracketing at start and end
decovar(
depends on
\unnamedvar
Open, named, extending a little further right than the default
decovarcontinues-[x[y[z[1[2]]]]](
and
decovarcontinues-[x[y[z[1[2]]]]])
depend on
/varconts-a
depends on
/1contvar
Open, unnamed, extending a little further right than the default
decovarcontinues(
and
decovarcontinues)
depend on
/varcontsunnamed
Open at left, extending a little further left than the default
decovarcontinued(
and
decovarcontinued)
and
decovarcont_stack(
and
decovarcont_stack)
depend on
/varcontd
bayard-variations not working for you? Check to see if it's aknown issue. If it isn't, add it!
I'll mention one bug in particular: sometimes the decos may draw below the staff instead of above it. Just addI: dynamic 1
to each tune or, to cover the entire abc file, at the top of the file. I do this in the bayard-variations demo, and it's documented inissue #1.
bayard-variations byHenry Bley-Vroman is licensed underCC BY-NC-SA 4.0 with a human rights condition fromHippocratic License 2.1. Persons interested in using or adapting this work for commercial purposes should contact the author.
For the full text of the license, see theLICENSE file.
About
abcm2ps decorations to add support for variation notation modeled after Samuel Bayard's