Skip to content

samcwiley/pibroxide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pibroxide: A Rust Bagpipe Rosetta Stone

Motivation and Goals

For a hobby as niche as bagpipe, there is a shockingly large amount of sheet music notation software options. Thankfully, this means many people can access the sheet music editor of their choice, most of which can compile pdfs for exchanging music freely. Unfortunately, this creates silos for musicians, arrangers, and composers, as it adds a barrier for sharing music that is editable.

pibroxide aims to provide a method to convert various bagpipe music file formats to each other, as well as readily convert any supported format to pdf or mp3.

Name and Origin

pibroxide is a portmanteau of the anglicization (pibroch) of "piobaireachd", the Scottish Gaelic word for "pipe music", also known as the "classical music of the highland bagpipe", and "-oxide", a suffix used for many Rust-based projects.

Formats supported

Currently, pibroxide supports lilypond and BMW file format with both parsers and readers. This means it can both read in lilypond files, as well as export them. As the project grows, the main focus will be to support additional file types with readers and writers.

The planned file types for added support include, in order of preference:

  1. .bww, used by Bagpipe Music Writer Gold and Bagpipe Player
  2. .mxl/.musicxml, used by MuseScore
  3. .abc, a music file format primarily used for celtic and traditional music
  4. Celtic Pipes? Ensemble? Who knows?

In addition to being able to import and export files in the supported formats, it can also export not only pdf files, but also midi files and mp3 files, all generated by lilypond.

The Internal Representation

Every bagpipe Tune can be represented as a series of Parts (usually two or four). Every Part can be represented as a series of Measures (usually four (repeated) or eight (sometimes repeated), depending on time signature/idiom). Each Measure can be responded as a series of Notes, which consist of an optional Embellishment, a Pitch, and a Duration. Alternatively, a Measure can be split into Beats, which also contain a series of one or more Notes.

Each parser aims to read its respective bagpipe music format into this internal representation (a Tune of Parts of Measures of Notes), and each writer aims to turn this internal representation back into a text-based format readable by its proprietary software.

About

A Rusty Bagpipe Rosetta Stone

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors