Skip to content

thekugelmeister/lilypond-bhs

Repository files navigation

lilypond-bhs

Utilities for notating and working with barbershop music in LilyPond!

Overview

Creating high-quality, beautiful, easy-to-read barbershop music notation can be a difficult task. The Barbershop Harmony Society provides a set of notation guidelines, intended to ensure uniformity and clarity across all barbershop arrangements. In practice, following these guidelines using modern music engraving software can be a tedious and drawn-out process requiring manual tweaking.

LilyPond is a free music engraving program designed to automate the process of laying out music. It has all of the necessary functionality to take an arrangement and automatically engrave it as a high-quality, beautiful, and easy-to-read document. Furthermore, its highly-extensible design allows for the addition of new functionality and configuration for specific use cases.

This repository represents a set of utilities for notating, engraving, and working with barbershop arrangements in LilyPond. The core functionality revolves around the notation and engraving of barbershop music, such that the output meets the Barbershop Notation Manual specification. Other tools are included to augment the experience of working with or arranging barbershop music in LilyPond.

Requirements

Software Version
LilyPond 2.20+

Optional Requirements

Software Version Purpose
Festival Enable automatic generation of tracks using basic singing voice synthesis

Usage

The core funcitonality of this package is based off of the built-in LilyPond choral templates, as used in satb.ly and ssaattbb.ly. These templates are designed to be included at the end of an input .ly file, and automatically format any music that fits their specification. This drastically simplifies the process of laying out multi-part choral music. See the documentation for the satb template for more details.

Basic Usage

As with the LilyPond choral templates, music and lyrics for each part are specified as variables. For a voice named VoiceOne, music should be assigned to the variable VoiceOneMusic, and lyrics should be assigned to the variable VoiceOneLyrics. The available voices and their names are typically pre-defined as part of the score spec. The score spec also handles grouping the voices into staves.

To format a score for a TTBB ensemble (Tenor, Lead, Baritone, Bass), include the following lines at the bottom of the file:

\include "bhs-init.ily"
\include "score-specs/bhs-ttbb.ily"
\include "lilypond-bhs.ily"

To change to another ensemble type, such as SSAA (Tenor, Lead, Baritone, Bass), simply swap out the score spec:

\include "score-specs/bhs-ssaa.ily"

BHS Markup: bhs-markup.ily

Additional functionality for marking up your score in BHS-specific ways can be found in bhs-markup.ily. Include this file at the top of your file.

Festival Synthesis

If Festival is installed on your system, you can automatically generate synthetic singing tracks when compiling your file. The existing music definitions are used as-is to define the notes sung by the synthesizer. For a voice named VoiceOne, the lyric definitions for Festival output should be assigned to the variable VoiceOneFestivalLyrics. These lyrics will not affect the layout of the score. This allows for the inclusion of Festival lyrics where there are skips in the lyrics for layout purposes.

To generate the tracks, include the following at the bottom of your file:

\include "bhs-festival.ily"
\BHSFestival

Examples

See example_tag.ly for a full example of the use of this package.

Project History

About

Utilities for notating barbershop music in LilyPond!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published