2022-03-14: quickly-0.7.0

  • fix issue #3, allow adding octave to notes in chordmode, but not to the inversion

  • fix issue #4, relative to absolute yields incorrect results

  • removed the quickly.registry module, included languages are now added to parce’s global registry

  • correctly handle skip with music instead of a single duration (Lily>=2.23.6)

  • rhythm.transform() now also handles duration in commands like tempo, tuplet, after and partial

  • documentation improvements

2022-02-12: quickly-0.6.0

  • requires parce-0.31.0

  • small registry module changes to adapt to parce

2022-01-23: quickly-0.5.0

  • requires parce-0.30.0

  • added time module for time computations

  • added key module for key signature and tonic computations

  • added rhythm module to manipulate durations in music or a part thereof

  • added dom.scope module to find nodes from included files

  • modified PitchProcessor:
    • note names now carry a default octave

    • pitch() method now returns a Pitch, old pitch() renamed to process()

  • introduced lily.ChordBody and FigureBody, to be able to add Duration at Chord and Figure directly

  • added lily.Durable as base type for any stuff that can have a Duration

  • notes as argument to relative, key or transpose are now Pitch, not Note

  • handle single durations in lyricmode, just like Unpitched

  • improvements to duration module, add duration.Transform

  • added transform() method to all Music nodes, to calculate durations in child nodes

  • added properties() method to Music node type, to store information during processing of descendant music

  • added datatypes module for small datatype helper classes, featuring Properties

  • documentation improvements

2021-12-31: quickly-0.4.0

  • added relative module, with abs2rel and rel2abs functions

  • possible to direct generators in Node and Range to not descend in a node

  • added node.Range class, to denote a range within a Node tree

  • added end parameter to Element.find_descendant(s)

  • added Element.find_descendant_right() and -left()

  • added dom.edit module to edit a parce document via the DOM node tree

  • added pitch.PitchProcessor.find_language and follow_language()

  • some methods/functions renamed and API cleanups

  • documentation improvements

2021-12-21: quickly-0.3.0

  • requires parce-0.28.0

  • DOM elegantly handles untransformed parce stuff such as CSS/JS in Html

  • Note and positioned Rest now have attrs for octave, accidental and oct_check

  • pitch: added Pitch and PitchProcessor to read/write pitch names in all languages, with style preferences for writing pitch names

  • added lily.Spanner.find_parallel() to find the other end of a spanner

  • added transpose module, transpose music in a node or (part of) parce.Document

2021-12-09: quickly-0.2.0

  • requires parce-0.27.0

  • added registry module to find and guess languages (like parce)

  • added LaTeX language and transform (for lilypond-book)

  • added element constructor helper for dom.htm module

  • added Element.py_dump() to create tree structures in Python code

  • simplified module and API, now that parce’s Transform finding algorithm is configurable

  • small bugfixes, improvements and documentation updates

2021-11-25: quickly-0.1.0

  • requires parce-0.26.0

  • added html language and transform (for lilypond-book)

  • add dom.htm element types (for lilypond-book HTML documents)

  • added indent module and support for creating properly indented output

  • documentation improvements

2021-11-11: quickly-0.0.9

  • requires parce-0.25.0

  • Add support for some new LilyPond-2.23 commands

  • fixed case where a symbol was interpreted as a pitch eg: tweak color red do

  • fixed some cases where incorrect input was not handled neatly

  • documentation improvements

2021-08-08: quickly-0.0.8

  • requires parce-0.24.0

  • fixed instance dict in Element nodes, added empty __slots__to mixins

  • added Node.filter() and Node.instances_of()

  • added a logo (two eighth rests, looking like “ly”)

  • new website at

  • small optimizations and documentation improvements

2021-03-08: quickly-0.0.7

  • requires parce-0.23.0

  • added quickly.numbering module

  • added module to construct elements/documents from text

  • removed some temp methods from dom.util

  • Element.copy_with_origin now works properly everywhere

  • Node.equals() now works for TextElement, by implementing body_equals()

  • improvements to TextElement, optional head value checking

  • renamed lily.PropToggle to Toggle

  • fixed escape warnings in source files

  • added duration.shift_duration()

  • moved scm.Int to scm.Number in some forgotten places

2021-02-16: quickly-0.0.6

  • required parce version 0.22.0

  • lily.Header, lily.Paper and lily.Layout now have easy to use properties to set variables like title, composer, etc.

  • lily.Document now has version attribute to read/set LilyPond version

  • added markup construction helper in quickly.dom.markup

  • Scheme transform handles all Scheme number features, e.g. #xb/f (a fraction in hex) and even complex numbers

2021-02-11: quickly-0.0.5

  • Milestone: quickly correctly parses my Mouvement piece!

  • fixed rest before duration

  • fixed dot missing in scheme pair

  • add space after markup commands

  • fixed dom.element.build_tree, it lost a node after two repeat nodes

  • parce removed identifier context; we only create Identifier with Assignment

  • smartly support tag and tweak without direction prepended

  • fixed documentation build errors.

2021-02-07: quickly-0.0.4

  • still pre-alpha but work in progress

  • quickly.dom.lily now has much more elements

  • correctly parse lists, property paths etc

  • added chordmode and chord modifiers, figuremode

  • quickly.lang.lilypond now transforms almost a full document

  • commands are combined with their arguments, based on signatures

  • work started on documentation with a quickly.dom explanation

2021-01-31: quickly-0.0.3

  • still pre-alpha

  • much more robust already

  • dom.element now has the four basic Element node types

  • dom.element can be constructed manually or via LilyPondTransform

  • writing back to document works

  • scheme expressions are fully read/built

  • markup expressions are fully read/built

  • complex articulations, tweak, tremolo etc. work well

  • toplevel and in block assignment is wrapped in Assignment node

  • lyricmode and drummode work

  • todo: music functions

  • some test files were added. todo: more test files

  • module documentation in good shape. todo: user documentation