ChangeLog

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 dom.read 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 https://quick-ly.info/
  • small optimizations and documentation improvements

2021-03-08: quickly-0.0.7

  • requires parce-0.23.0
  • added quickly.numbering module
  • added dom.read 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! https://github.com/wbsoft/lilymusic/blob/master/berendsen/mouvement.ly
  • 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