Giter Club home page Giter Club logo

lilydrum's Introduction

Lilydrum (pipeband-drumming notation)

Lilypond does not cover drum notation for pipebands out of the box. That is, right is above the line and left is below it.
In the same manner as the bagpipe.ly file included with Lilypond, this library allows to easily use this notation with opt-in elements. See the cheatsheet (ly, pdf) for a handful of definitions.

preview of the score
(see ./example.ly for fully annotated code and its score)

There has been such a Lilypond include file earlier, made by Simon Froger. This repository builds on his work. The original (updated) file can be found at http://lsr.di.unimi.it/LSR/Snippet?id=970.

His website (French) can be found here

This repository has also been converted into a lyp package: lyp/lilydrum.

shameless plug:
An example of scores typeset with this library can be found in kastdeur/pipeband-music or on my website (pdf).

How to use

Add the following line to include the definitions for use in your document:

\include "[path]/lilydrum.ly"

The music needs to be defined in a \drummode environment. You can get this in two ways:

\new DrumStaff {
	\drummode {
		[music]
	}
}

or (simply)

\drums {
	  [music]
}

Music

In pipeband music there is a distinction between left-hand and right-hand strokes. To implement this in your music you can use the d and g notenames.

  • d: (droite) right hand
  • g: (gauche) left hand

You can still use the regular drumcharacters (such as sn or bd) in your music.

Pipeband DrumStaff

To make a pipeband drumstaff (a DrumStaff with a few specific changes) you can use

\new PipeBandDrumStaff

You do not need to use PipeBandDrumStaff to use the music definitions.

Embellishments (Side Drum)

Flams and Drags can be added using \flam and \drag. They can determine whether to be left or right by themselves for simple expressions.

If a certain hand is needed they can be inserted directly by appending d or g to flam,drag,.. e.g. a \flam d is equal to \flamd d.

There are currently 4 such shortcuts:

  • \flam - A Flam
  • \drag - A Drag
  • \ruff - A Ruff
  • \sruff - A Swiss Ruff

Unison Brackets (Side Drum)

Unison Brackets are triggered using \dr. They need an endpoint which is defined by \fr.

You can use \tutti for this aswell. It takes a music expression which is automagically put under brackets.

Appending dr to the \flam's or \drag's triggers the unison bracket. e.g. \flamdr or \draggdr.

Flourishing (Tenor Drum)

A few flourishes have been added, most are from the EUSPBA:

  • \flourish
  • \splitTheFeather
  • \cartWheel
  • \up
  • \rswipe
  • \blfy - butterfly
  • \rblfy - reverse butterfly
  • \rthrow - throw right
  • \lthrow - throw left
  • \bthrow - throw both
  • \rpush - push right
  • \lpush - push left
  • \bpush - push both
  • \andrewStop - St. Andrew's Stop
  • \stop

Scoops have not been implemented correctly yet. (see GitHub Issue #4)

lilydrum's People

Contributors

kastdeur avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lilydrum's Issues

automatic subbeaming

Keep subbeaming intact. So subgroups of two can always be identified easily.

received 8th: d32[ g d g] d32[ g d g]
received 16th: d32[[ g] d[ g]] d32[[ g] d[ g]]
desired result: d32[[[ g] d[ g]] d32[[ g] d[ g]]]

midi support

Midi support for drumming would be really cool.

This needs a macro to switch sound (Bass, Tenor1, Tenor2, Side).

Also, sides have rolls which have to be implemented somehow.(no idea yet for this)

Add a license

Please add a software license so that I can fork this repository. I'd like to turn it into a lyp package.

part macro

In pipemusic a lot of repetition occurs, especially "part 2 of 4" is common.
Having such a command would be really nice to have.

Strange tuplet bracket angle when first note is rL flam

Hello,

Thank you for this wonderful package. I am not sure if you are still actively maintaining it or not.

When a tuplet begins \flam gN the tuplet bracket and number are displayed at an angle:

tuplet

This does not happen if the flam is \flam dN(lR) and it only happens when the flam is at the beginning of the tuplet. It does not seem to matter where in the bar the tuplet occurs.

Here is a test case:

\version "2.20.0"
\include "includes/lilydrum-master/lilydrum.ly"

\score {
  \new PipeBandDrumStaff {
    \drummode {
      \time 2/4
      \tuplet 5/4 {
        \flam g16 d16 g16 d16 g16
      } d4 |
    }
  }
}

Embellishment Autobeaming

If a normally beamed note comes before a drag, they have a flag instead of a beam
This can be fixed by explicit beaming, but I'd rather have a good autobeaming for this.

Note that this is not an issue for flams.


\include "lilydrum.ly"

\new PipeBandDrumStaff {
  \drummode {
    d8 \flam d  g8 \flam g  d8 \drag d  g8 \drag g |
  }
}

tmp preview

It can be temp-fixed with explicit beaming:

\include "lilydrum.ly"

\new PipeBandDrumStaff {
  \drummode {
    d8 \flam d  g8 \flam g  d8[ \drag d g8 \drag g] |
  }
}

tmp preview

Deprecation warnings lilypond v2.24

lilydrum/lib/embellishments.ily:11:38: warning: deprecated: missing `.' in property path Score.GraceSpacing.spacing-increment
	\override Score.GraceSpacing 
                                     #'spacing-increment = #0

4 bars per line

It's customary to have 4 bars per line for portrait and 8 for landscape...

Most of the time can this be accomplished by \break-ing every 8 measures and having enough notes in. However, it would clear the code if there was an external command for this.

Rimshot symbol

I know a rimshot symbol as a normal note with either a slash or cross through it.
This symbol is still missing.

open ended tutti

The tutti macro needs a switch to open the ending (to implicitly indicate to continue the tutti).

Maybe the same mechanism can be used to create an open start, though not yet needed.

detect if music is in `\repeat volta`

Not really something that should be in this package, but a function that detects whether the current environment is in a \repeat volta (or instead in a \repeat unfold) would be really cool to have.

This could allow music to transform itself depending on the context.

Autohand function implementation

Currently a tuplet beginning with a flam has a strange tuplet beam (slanted)
This can be fixed by putting the flam outside of the tuplet ..
However the autohand function doesn't work this way yet

The autohand function should search across the SequentialMusic to find the first note and check on that note which hand it is.
(Perhaps we need a default for this aswell if not right or left hand)

\rthrow, \lthrow cause postscript errors

Trying to compile the cheatsheet.ly file with Lilypond GNU LilyPond 2.19.37 fails:

$ lilypond -V cheatsheet.ly
...
...
...
GPL Ghostscript 9.15 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /undefined in closedpoint
Operand stack:
   0   0   0   0
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1951   1   3   %oparray_pop   1950   1   3   %oparray_pop   1934   1   3   %oparray_pop   1820   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1183/1684(ro)(G)--   --dict:0/20(G)--   --dict:119/200(L)--
Current allocation mode is local
Last OS error: Invalid argument
Current file position is 583295
GPL Ghostscript 9.15: Unrecoverable error, exit code 1
warning: `(gs -dSAFER -dDEVICEWIDTHPOINTS=595.28 -dDEVICEHEIGHTPOINTS=841.89 -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite -sOutputFile=cheatsheet.pdf -c.setpdfwrite -f/var/folders/tz/jxcv5s0j091dfpxl3qbvpnf40000gn/T//lilypond-FB96M1)' failed (256)

fatal error: failed files: "/tmp/lyp/wrappers/cheatsheet.ly"

I pinpointed the problem to the \rthrow and \lthrow articulations on line 72

BTW, your code is forked as a lyp package here.

Finish README

might be handy. Oh, this is also a hello world thingy

turn off tutti when using an expression with removeWithTag

When repeats are unfolded tutti's show up in the second time through.
Most of the time the second time through all bars are played in unison.
Having a tag in \tutti, we can reuse an expression while turning off a unison.

It could work by using simultaneous music.
Right now I can do the following to attain something like this:

<<
    \tag #'tutti { \tutti { s4 s4 s4 } }
    { d8 g d8 g d4 }
>>

then use \removeWithTag #'tutti to remove the unison bracket.

For this to work, a function is needed to get enough spacer notes. Either by calculating the total length or replacing all notes with spacer notes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.