{"id":17554100,"url":"https://github.com/olets/bayard-variations","last_synced_at":"2026-03-06T13:03:07.876Z","repository":{"id":151483334,"uuid":"68849113","full_name":"olets/bayard-variations","owner":"olets","description":"abcm2ps decorations to add support for variation notation modeled after Samuel Bayard's","archived":false,"fork":false,"pushed_at":"2020-12-19T18:05:40.000Z","size":211,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-01T15:44:01.140Z","etag":null,"topics":["abc","abc-notation","abcm2ps","fiddle","music","postscript","typesetting"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/olets.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-09-21T19:07:29.000Z","updated_at":"2021-03-28T22:03:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"70af3a74-6181-4f76-bf27-f9ce12e29f22","html_url":"https://github.com/olets/bayard-variations","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/olets/bayard-variations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olets%2Fbayard-variations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olets%2Fbayard-variations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olets%2Fbayard-variations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olets%2Fbayard-variations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/olets","download_url":"https://codeload.github.com/olets/bayard-variations/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/olets%2Fbayard-variations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30178286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T12:39:21.703Z","status":"ssl_error","status_checked_at":"2026-03-06T12:36:09.819Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abc","abc-notation","abcm2ps","fiddle","music","postscript","typesetting"],"created_at":"2024-10-21T06:50:51.231Z","updated_at":"2026-03-06T13:03:07.843Z","avatar_url":"https://github.com/olets.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# bayard-variations\n\nThese [abcm2ps](https://github.com/leesavide/abcm2ps) \"decos\" add support for above the staff variation-marking notation to [abc](http://abcnotation.com/).\n\n[Click here to download a zip of these files.](https://github.com/olets/bayard-variations/archive/master.zip)\n\n\nFor 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's [*Old Time Kentucky Fiddle Tunes*](http://www.kentuckypress.com/live/title_detail.php?titleid=1074#.V-Mch5MrKHo). Titon says he \"and other scholars\" trace the idea back to [Samuel Bayard](https://en.wikipedia.org/wiki/Samuel_Preston_Bayard), in his 1944 *Hill Country Tunes: Instrumental Folk Music of Southwestern Pennsylvania*. Bayard's notation was actually nicer, as it showed exactly which notes were varied (my crop):\n\n\u003cimg src=\"images/bayard.jpg\" height=\"150px\"/\u003e\n\nAfter I'd been working on PostScript decorations to emulate Bayard for a while, Beáta Salamon's [*Magyar népzenei dallamgyűjtemény*](http://www.hagyomanyokhaza.hu/page/716/) came out… and what did I find in it but beautiful Bayard-type variation notation!\n\nThese **bayard-variations** are my own expansion on Bayard's and Salamon's designs.\n\n### Contents\n  \n- Introduction\n- [Usage](#usage)\n- [Variation decoration types](#variation-decoration-types)\n- [Customization](#customization)\n- [Included decorations](#included-decorations)\n- [Design your own](#design-your-own)\n- [Architecture](#architecture)\n- [If something goes wrong](#if-something-goes-wrong)\n- [License](#license)\n\n\n## Usage\n\nDownload at least `bayard-variations.fmt`. Run abcm2ps with\n\n\tabcm2ps INPUTFILE.abc -F bayard-variations.fmt\n\n(See the [abcm2ps readme](https://github.com/leesavide/abcm2ps) for additional options.)\n\t\nUse `hbv-deco-chords.fmt` to support writing guitar chords (e.g. `\"A\"`) with stacked variation decorations (see [below](#var-x_stack)). Simply download the file in addition to `bayard-variations.fmt`, and uncomment (remove the line-initial `%` from) the first line of `bayard-variations.fmt`.\n\n## Variation decoration types\n\n1. **var-x**\n \n\t```\n\t!var-x(! y0 AAA BBB !var-x)!\n\t```\n\tprints `x-------,` over the notes AAA BBB\n\n\t\u003ckbd\u003e\u003cimg src=\"images/var-x.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\n2. **var-xy**\n\n\t```\n\t!var-xy(! y0 AAA BBB !var-xy)!\n\t```\n\tprints `x, y----,` over the notes and so on for `var-xyz`, `var-xyz1`, and `var-xyz12`\n\n\t\u003ckbd\u003e\u003cimg src=\"images/var-xy.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\n3. **var**\n\n\t```\n\t!var(! y0 AAA BBB !var)!\n\t```\n\tprints `,-------,` over the notes\n\n\t\u003ckbd\u003e\u003cimg src=\"images/var.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\n4. **varcontinues-x**\n\n\t```\n\t!varcontinues-x(! y0 AAA BBB !varcontinues-x)!\n\t```\n\tprints `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 varcontinued*\n\n\t\u003ckbd\u003e\u003cimg src=\"images/varcontinues-x.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\n5. **varcontinues**\n\n\t```\n\t!varcontinues(! y0 AAA BBB !varcontinues)!\n\t```\n\tprints `,---------` over the notes (e.g. for use when a variation extends beyond the end of a staff). *varcontinues is intended to pair with varcontinued*\n\n\t\u003ckbd\u003e\u003cimg src=\"images/varcontinues.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n \n6. **varcontinued**\n\n\t```\n\t!varcontinued(! y0 AAA BBB !varcontinued)!\n\t```\n\tprints `--------,` 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*\n\n\t\u003ckbd\u003e\u003cimg src=\"images/varcontinued.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\nThose 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:\n\n7. **var-x\\_stack**\n\n\t```\n\t!var-x_stack! !var-y_stack! y0 AAA !var-y_stack)! BBB !var-x_stack)!\n\t```\n\tprints `y----,` over `AAA` and, above that, `x---------,` over `AAA BBB`\n\n\t\u003ckbd\u003e\u003cimg src=\"images/var-x_stack.png\" height=\"90px\"/\u003e\u003c/kbd\u003e\n\n8. **varcont\\_stack**\n\n\t```\n\t!varcont_stack(! !var-x_stack! AAA !var-x_stack)! BBB !varcont_stack)!\n\t```\n\tprints `x----,` over `AAA` and, over that, prints `-----------,` over `AAA BBB`\n\n\t\u003ckbd\u003e\u003cimg src=\"images/varcont_stack-and-chord.png\" height=\"100px\"/\u003e\u003c/kbd\u003e\n\n\n\nNotes:\n\n- **guitar chords** (in `\"\"` quotations) **don't look good with stacked variation\nmarkers. Use the included `hbv-deco-chords.fmt` to get around this** - include that `.fmt` and replace any\n\n\t```\n\t!var..._stack(! y0 \"X\" ... !var..._stack)!\n\t```\n\n\twith\n\n\t```\n\t!var..._stack(! y0 !X! y0 ... !var..._stack)!\n\t```\n\n\tThe first line of `bayard-variations.fmt` imports `hbv-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 of `bayard-variations.fmt`.\n\t\n- I recommend always putting a `y0` after the opening deco of a long decoration,\ne.g. after `!var-x(!`. It's sometimes a good idea to put one after the closing\ndeco `!var-x)!` and, in the case of variation markers stacked above guitar chords, after the `!X!` stackable guitar deco.\n\n## Customization\n\nI use Monaco 9 for the label and a thin 60%-black dashed line\n\n-\tThe font is defined before every occurrence of the postscript command `show`\n-\tThe thickness of the line is defined before every `SLW` (abcm2ps shorthand for\n\tthe postscript command `setlinewidth`) (default: `0.5`)\n-\tThe darkness of the line is defined before every non-zero `setgray` (default: `0.6`)\n-\tThe dash is defined before every non-`[]` `setdash` (default: `[3 5]`, which is 3px\n\tof line followed by 5px of space)\n\nThe line could be made e.g. solid and black by commenting out all `setdash` and `setgray`.\n\n## Included decorations\n\nI've included a lot of decorations, which should cover most needs:\n\nNo referent:\n\n- the unnamed decoration `var`\n\nSingle referent:\n\n- single-letter decorations `var-a` to `var-z`\n- single-letter stackable decorations `var-a_stack` to `var-z_stack`\n- single-number decorations `var-0` to `var-9`\n- single-number stackable decorations `var-0_stack` to `var-9_stack`\n- an asterisk decoration `var-*`\n\nTwo referents:\n\n- two-letter decorations `var-ab` to `var-yz` for non-overlapping sequential pairs (e.g. `var-bc`, not `var-ac`)\n- two-number decorations `var-12`, `23`, `34`, `45`\n- assorted other two-letter decorations I've needed (`var-is`, `cm`, `be`, `fj`, `pq`, `bd`, `ei`, `z1`)\n- assorted two-letter stackable decorations I've needed (`var-bc_stack`, `de`, `ef`, `gh`, `ij`, `jk`, `lm`, `no`, `pq`, `z1`)\n\nThree referents:\n\n- three-letter decorations `var-abc` to `klm` (again, in non-overlapping sequential triplets - so `abc` and `def` but not `bcd` or `cde` (though in that particular case, see immediately below))\n- assorted other three-letter decorations I've needed (`var-bcd`, `cde`, `cgh`, `cdj`, `mno`, `rst`, `stu`, `tuv`)\n- assorted stackable three-letter decorations I've needed (`var-ghi_stack`, `opq`, `stu`, `tuv`, `vwx`)\n\nMore than three referents:\n\n- some four-letter decorations I've needed (`var-abcd`, `klmn`, `lmno`, `vwxy`, `wxyz`)\n- some stackable four-letter decorations (`var-efgh_stack`, `fghi`)\n- some five-letter decorations (`var-abcde`, `defgh`, `aemno`)\n\nOpen-ended (no referent, or single- or multiple-referent):\n\n- the open-ended unnamed decoration `varcontinues`\n- single-letter open-ended decorations `varcontinues-a` to `varcontinues-h`\n- stackable unnamed open-ended decoration `varcons_stack`\n- the open-start decoration `varcontinued`\n- stackable open-start decoration `varcont_stack`\n\nSpecial:\n\n- `var-first` decoration for a first-time-through variation\n- `var-last` decoration for a last-time-through variation\n\nIf that doesn't meet your needs, you can always\n\n## Design your own\n\nYou'll need to add three lines per decoration, within `beginps...endps`:\n\n\t/var-[name]{/varname ([marker text] def [1var/[2-5]vars]}!\n\t\tdeco var-[name]( [5 for normal, 7 for stacking] - 17 0 0\n\t\tdeco var-[name]) [\"] var-[name] 17 0 0\n\n\nOne-Character Example: `var-a`\n\n\t/var-a{/varname (a) def 1var}!\n\t\tdeco var-a( 5 - 17 0 0\n\t\tdeco var-a) 5 var-a 17 0 0\n\nTwo-Character Example: `var-ab`\n\n\t/var-a{/varname (a, b) def 2vars}!\n\t\tdeco var-ab( 5 - 17 0 0\n\t\tdeco var-ab) 5 var-ab 17 0 0\n\nThree-Character Example: `var-abc`\n\n\t/var-abc{/varname (a, b, c) def 3vars}!\n\t\tdeco var-abc( 5 - 17 0 0\n\t\tdeco var-abc) 5 var-abc 17 0 0\n\nFour-Character Example: `var-abcd`\n\n\t/var-abcd{/varname(a, b, c, d) def 4vars}!\n\t\tdeco var-abcd( 5 - 17 0 0\n\t\tdeco var-abcd) 5 var-abc 17 0 0\n\nFive-Character Example: `var-abcde`\n\n\t/var-abcde{/varname (a, b, c, d, e) def 5vars}!\n\t\tdeco var-abcde( 5 - 17 0 0\n\t\tdeco var-abcde) 5 var-abcde 17 0 0\n\nCustom Example: `var-custom`\n\n\t/var-custom{/varname (a. bc!!) def 3vars}!\n\t\tdeco var-custom( 5 - 17 0 0\n\t\tdeco var-custom) 5 var-custom 17 0 0\n\nCustom Stackable Example: `var-custom2`\n\n\t/var-custom_stack{/varname (a. bc!!) def 3vars}!\n\t\tdeco var-custom_stack( 7 - 17 0 0\n\t\tdeco var-custom_stack) 7 var-custom_stack 17 0 0\n\nNote: **for custom variables, by default your marker text can be one, four\nseven, ten, or thirteen characters** long (using 1var, 2vars, 3vars, 4vars, and\n5vars, respectively). For marker text of other lengths you'll need to customize the\nvariable `\u003cadjust\u003e`, which determines the horizontal placement of the marker line's start.\n\n\n## Architecture\n\nHere's the logic\n\n1. Named, bracketing at end  \n\u0026emsp;deco `var-[x[y[z[1[2]]]]][_stack](`  \n\u0026emsp;and  \n\u0026emsp;deco `var-[x[y[z[1[2]]]]][_stack])`  \n\u0026emsp;\u0026emsp;depend on  \n\u0026emsp;\u0026emsp;`/var-x`  \n\u0026emsp;\u0026emsp;\u0026emsp;depends on  \n\u0026emsp;\u0026emsp;\u0026emsp;`/[#]vars`  \n\u0026emsp;\u0026emsp;\u0026emsp;\u0026emsp;depends on  \n\u0026emsp;\u0026emsp;\u0026emsp;\u0026emsp;`/variation`\n\n1. Unnamed, bracketing at start and end  \n\u0026emsp;deco `var(`  \n\u0026emsp;\u0026emsp;depends on  \n\u0026emsp;\u0026emsp;`\\unnamedvar`\n\n1. Open, named, extending a little further right than the default  \n\u0026emsp;deco `varcontinues-[x[y[z[1[2]]]]](`  \n\u0026emsp;and  \n\u0026emsp;deco `varcontinues-[x[y[z[1[2]]]]])`  \n\u0026emsp;\u0026emsp;depend on  \n\u0026emsp;\u0026emsp;`/varconts-a`  \n\u0026emsp;\u0026emsp;\u0026emsp;depends on  \n\u0026emsp;\u0026emsp;\u0026emsp;`/1contvar`\n\n1. Open, unnamed, extending a little further right than the default  \n\u0026emsp;deco `varcontinues(`  \n\u0026emsp;and  \n\u0026emsp;deco `varcontinues)`  \n\u0026emsp;\u0026emsp;depend on  \n\u0026emsp;\u0026emsp;`/varcontsunnamed`\n\n1. Open at left, extending a little further left than the default  \n\u0026emsp;deco `varcontinued(`  \n\u0026emsp;and  \n\u0026emsp;deco `varcontinued)`  \n\u0026emsp;and  \n\u0026emsp;deco `varcont_stack(`  \n\u0026emsp;and  \n\u0026emsp;deco `varcont_stack)`  \n\u0026emsp;\u0026emsp;depend on  \n\u0026emsp;\u0026emsp;`/varcontd`\n\n## If something goes wrong\n\n**bayard-variations** not working for you? Check to see if it's a [known issue](https://github.com/olets/bayard-variations/issues). If it isn't, add it!\n\nI'll mention one bug in particular: sometimes the decos may draw below the staff instead of above it. Just add `I: 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 in [issue #1](https://github.com/olets/bayard-variations/issues/1).\n\n\n\u0026nbsp;\n\n## License\n\n\u003cp xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:cc=\"http://creativecommons.org/ns#\" class=\"license-text\"\u003e\u003ca rel=\"cc:attributionURL\" property=\"dct:title\" href=\"https://www.github.com/olets/git-replay\"\u003ebayard-variations\u003c/a\u003e by \u003ca rel=\"cc:attributionURL dct:creator\" property=\"cc:attributionName\" href=\"https://www.github.com/olets\"\u003eHenry Bley-Vroman\u003c/a\u003e is licensed under \u003ca rel=\"license\" href=\"https://creativecommons.org/licenses/by-nc-sa/4.0\"\u003eCC BY-NC-SA 4.0\u003c/a\u003e with a human rights condition from \u003ca href=\"https://firstdonoharm.dev/version/2/1/license.html\"\u003eHippocratic License 2.1\u003c/a\u003e. Persons interested in using or adapting this work for commercial purposes should contact the author.\u003c/p\u003e\n\n\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1\" /\u003e\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1\" /\u003e\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1\" /\u003e\u003cimg style=\"height:22px!important;margin-left:3px;vertical-align:text-bottom;\" src=\"https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1\" /\u003e\n\nFor the full text of the license, see the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folets%2Fbayard-variations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Folets%2Fbayard-variations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Folets%2Fbayard-variations/lists"}