PipeScore is a free, easy-to-use, online bagpipe notation application. Use it here!
PipeScore's unique feature is reactive gracenotes - pipe embellishments that automatically update when you change the note that they are on. This means gracenotes can be added in sets (e.g. 'add a doubling to this note') rather than the user having to individually pick the correct one.
Watch the video for an introduction to using PipeScore.
PipeScore is powered by:
- typescript
- mithril for rendering
- firebase for saving, user accounts, and hosting, via the following libraries:
- esbuild for building
- biome for linting
- prettier for code formatting
- Reactive embellishments - a faster way to input gracenotes
- Automatic note grouping and spacing
- Sharing using URLs
- Playback
- Ties, triplets, time signatures, text boxes
- Parts, repeats, second timings
- Harmonies
- Multiple tunes and pages
- Undo / Redo
- Importing/exporting from the Bagpipe Music Writer format
- Exporting to PDF
- Cloud saving, downloading and uploading of files
- Built-in documentation, as well as a comprehensive help page
- Multi-language interface (currently English and French)
- Intuitive user interface for all of the above
- ~16000 lines of code (including tests)
See src/PipeScore/README.md
for documentation.
This manual is a helpful guide to BWW files.
You will need:
python3
(andpip3
)npm
To install dependencies, run:
$ npm install # install JS dependencies
$ pip3 install svgwrite # install svgwrite, for building icons
To build JS files, icons and HTML pages, run:
$ npm run build # build JS, static pages and icons
Run the following commands to run locally, ideally in separate terminals:
$ npm run dev # run the development server
$ npm run watch # rebuild JS on changes
$ npx tsc --watch # typecheck
To build a production JS bundle run:
$ npm run build # build minified bundle
Thank you to any and all who have contributed code to PipeScore!
- benjaminelliot - the initial implementation of BWW file parsing
- HerveDubois - translations of gracenote names into French