Version 77:
- bug: no key in percussion staff (K:none)
- bug: scale xml midi volume 0..100 -> abc midi volume 0..127
- bug: ABC code for a tab staff (with option -t) compatible with default %%propagate-accidentals
  settings of abc2midi
- generate SVG code with full closing tags (<rect ... ></rect>), i.e. no short endings (<rect ... />)
  (needed when embedding %%beginsvg ... %%endsvg into HTML)
- corrected python3 compatibility bug (reported independently by Dick Jackson and Jan Wybren de Jong)

Version 76:
- improved translation of tab staff allowing the same note played on max. four different strings
  (for each voice and even at the same time, as chord, if it were playable).

Version 75:
- step height bug with a tab staff of 3 lines
- new tab staff attribute "diafret" translates diatonic fretting (with option -t)
- with option -i the xml data is read from standard input

Version 74:
- keep string, courtesy and finger deco's adjacent to the ABC note, also in chords.
- move other deco's of chord notes outside, before the chord. [C.E!stemless!G] -> .!stemless![CEG]
- bug when normal staff without clef after tab staff (caused error messages, but ABC code was correct)

Version 73:
- option -t also translates a tab staff to equivalent %%map and %%voicemap (with restrictions, see readme)
- for a tablature, option -s shifts note heads slightly to the left (for different stem alignment).
- translation of MusicXML measure-repeat to [I:repeat x y] (code contributed by Larry Myerscough)

Version 72:
- option -t replaces I:percmap by equivalent %%map and %%voicemap. This allows percussion voices to
  be rendered by abc2svg.

Version 71:
- implementation of stemless notes and accidentals with parentheses (ABC: !stemless! and !courtesy!)
- translation of tablature (to ABC notation supported by abc2xml)
- does not crash anymore on an empty "rights" element.

Version 70:
- missing decorations added: !snap!,!thumb!,!^!,!slide!,!pppp! and !ffff!
- dual note/chord tremolo's added: !/-!, !//-!, !///-! and !////-!
- Translation of glissando !~(!, !~)! and slide !-(!, !-)! added
- Translation of sound elements with jump attribute added (dalsegno, dacapo, dacoda, fine, capo, segno).
  These sound elements now take priority over text annotations with the same meaning.
- bug in translation of trill-line (stop after last note -> stop before last note)
- bug in translation of single tremolo's (number of bars was incorrect)

Version 69:
- Several small changes for compatibilty with Python3. (integer division, file-encoding, iterator->list etc.)
- A bar line element without location attribute now defaults to location=right.

Version 68:
- An xml file where the last part happened to be empty procuced no output at all, even when the other
  parts did contain music.

Version 67:
- removed voice reordering for ottava annotations, because abc2svg is now capable of rendering ottava's
  in any voice.

Version 66:
- translate pedal directions and ottava directions (8va, 8vb)
- improved allocation of staff directions to ABC voices (wedges, ottava etc.). They are now put
  into the voice of the next note (if any) on the staff.
- option --v1 to enable the old allocation method (all directions to first voice of staff)
- option --noped to disable translation of pedal directions
- recognize both tie variants in MusciXML (<tie> and <notations/tied>) and translate to ABC tie.

Version 65:
- improved the translation of durations in MusicXML where the rational approximation needs a denominator > 64

Version 64:
- take the duration of invisible notes into account, as subsequent backup elements seem to expect this. Previously
  invisible notes followed by a backup would cause a negative time value and crash.

Version 63:
- do not skip voices without notes when they do contain certain directions (words, coda, dynamics, chords)
- rehearsal directions are translated to ABC text annotations (requested by Donovan Simmons)

Version 62:
- bug in translation of xml 'default-y' argument for text directions (reported and corrected by Janus Meuris)
- xml 'rights' elements (copyright statements) are translated to Z: information fields (reported and corrected by Janus Meuris)
- trim white space from xml 'work-title' and 'movement-title' and replace each newline by newline + T:
- bug in translation of accidentals (reported by Janus Meuris). Can only occur with xml files where altered notes (i.e.
  the pitch/alter-element is present) do not have a corresponding accidental-element. Neither Finale nor Musescore produces such
  files. But it seems Sibelius does ....
- honour the print-object attribute in a rest, i.e. make it invisible (x) when print-object == no. (reported by Janus Meuris)

Version 61:
- bug in translation of xml 'default-y' argument for text directions (reported and corrected by Janus Meuris)
- xml 'rights' elements (copyright statements) are translated to Z: information fields (reported and corrected by Janus Meuris)
- trim white space from xml 'work-title' and 'movement-title' and replace each newline by newline + T:

Version 60:
- output percmap when display step is different from abc note (for legacy abc percussion code)
- bug in matching percussion clef when writing file header (only occurred with multiple parameters in V: K: field)

Version 59:
- improved and debugged translation of clef suffixes +/-8 and +/-15
- translation of the "filled" attribute for note heads.
- added -t option which makes staff step values depend on the clef (percmap)
- in I:percmap transposition 4 diatonic steps for stafflines=1 (xml: E -> abc: B)
- the value zero was not translated from the xml pageformat default element

Version 58:
- staff step value in I:percmap always computed relative to treble clef (independent of actual clef).
- all notehead names translate to I:percmap (spaces replaced by hyphen). Previously only cirle-x and x were translated.

Version 57:
- translation of instrument/channel changes (as implemented in Finale) into equivalent [I:MIDI=] commands
  (use option "-m 1" or "-m 2" to allow these commands to appear in the resulting output)
- change "perc=on" voice parameter into "map=perc"
- translate staff-lines attribute
- program more resilient against buggy Sibelius xml (voice and lyric numbers)

Version 56:
- translation of drum parts using a percussion map. Both %%drummap and I:percmap instructions are issued.
  Some notehead symbols are mapped to notation that abcm2ps supports (^ and _). The voice definition
  of a percussion instrument (V:) gets an extra perc=true parameter when it has a normal (bass) clef.
  (This generates an error in abcm2ps, and it outputs a percussion clef ... )
- changed -m option, -m 0 (default): no %%MIDI output, -m 1: only %%MIDI program, -m 2: all %%MIDI
- A percussion voice always gets a "%%MIDI channel 10" specification (when option -m > 0)

Version 55:
- insert tempo changes at the place where they belong (were previously always moved to the beginning of the mesure).
- changed octave=+1 attribute into octave=1, because abc2svg does not accept the +1 argument.

Version 54:
- added command line option -x: do not output score line breaks ($)
- added command line option -p: specify page layout parameters (see readme)
- translate xml pageformat specifications into abc pseudo commands when option -pf is given
- changed the approximation of durations with denominator > 64 (for compatibility with javascript version of xml2abc)
- added command line option -j: abc output identical with javascript version of xml2abc (mainly ordering issues)
- unified parameter passing of all options for interface with EasyABC

Version 53:
- new option -b results in ABC lines with a fixed number of measures (bars).
  (option -n remains what it was: maximum number of characters on a line, -b is ignored when -n is given).

Version 52:
- program can run with either Python 2.6, 2.7 or Python 3.x. (tested with Python 3.4 and 2.7)
- small code change for compatibility with EasyABC's interface to xml2abc.

Version 51:
- insert [I:staff+/-n] annotations when a voice moves to a different staff.
- chord notes (i.e. notes marked as such in MusicXML) are kept on the staff of the first chord note (in MusicXML order)
  because ABC cannot (yet) express a single chord extending over more than one staff.
- made script executable on Linux
- only base name of input path is joined with the -o directory path. (correction P.Villiger)

Version 50:
- corrected bug that raised an exception when a second line of lyrics appeared in the middle of a tune

Version 49:
- do not stop on an exception when processing a set of *.xml files.
- correct part-list when part-groups are not properly terminated (resist buggy xml-software)
- corrected bug in melisma translation

Version 48:
- volta's are output on all voices (was only on the first voice) for the sake of abc2midi
- option -v adds three different ways to reduce clutter with the typesetting of volta brackets.
- note length ouput limited to an accuracy of 1/64
- replace (3:2:3 -> (3
- ignore <instrument> assignment in notes when no corresponding midi-instrument is defined in the xml-partlist
- translate acciaccatura's

Version 47:
- do not output %%midi commands when no midi-instruments present in the xml file 
- -m option: also output midi channel, volume and -panning commands when these settings are present
in xml, but only output the channel command when the channel number is different from the voice nummer.
- changed repeats from :|] -> :| and [|: -> |: and :|]|: -> ::

Version 46:
- Melisma and elision handled in lyrics.
- spaces, hyphens and underscores are escaped in lyric text.

Version 45:
- merged patch file from Nils Liberg:
  - more ornaments translated
  - default mode is major, default key is none (wrong in previous release)
  - do not output %%staves for a single voice tune
  - much improved setting of T: C: and Z: fields
- added credits filter (see Readme) to remove redundant T: fields
- added -c C options to set the credit filter level. C=0-6, 0=much filtering (default), 6=no filtering.
- translate Coda and Segno directions

Version 44:
- no abc-duration suffix for grace notes with a real duration in xml
- per voice computation of optimal unit length (L:)
- most frequent optimal unit length goes into the header.
- option -d D sets the unit lenght to L:1/D and skips the computation of optimal values
- move chord ties after bracket when all notes inside chord are tied ([c-e-g-] -> [ceg]-)
- changed default key from K:none to K:major
- changed default placement of text annotations from _ to ^
- changed %%MIDI program c p to %%MIDI program p
- added translation of <octave-change> into clef transposition
- warning when a completely empty measure occurs (|cde| |fga|)

Version 43:
- moved note durations in chord outside the brackets. [E2G2] -> [EG]2
- introduce broken rhythm notation. E3/2E/ -> E>E
- corrected unintentional beam break caused by grace notes
- escape double apostrophes in text annotations

Version 42:
- failed to detect natural when xml-file has no natural accidental where there should have been one.
- allow floating points in tempo, midi volume- and panning.

Version 41:
- set keys properly for transposing instruments
- include midi program changes for all instruments
- skip empty parts

Version 40:
- tuplets further improved:
  - nested tuplets
  - single element tuplets
  - recognise standard tuplets when the <tuplet/type> notation is absent.
- removed limitation of 10 voices per part
- voice definitions moved from header to body

Version 39:
- chords, text annotations, dynamics and wedges are inserted in the first voice of the specified staff,
  key changes are inserted in all voices of the specified staff.
- part number and measure number added to most warnings.
- program is more resilient when translating untidy xml-files:
  - allow out of order insertion of elements: order time at the end of a complete measure.
  - try to repair overlapping elements in one voice (shorten, make chord or discard)
  - stretch measure when it is shorter than corresponding measures in other voices (of the same part)
  - warn when a measure is longer than the metre

Version 38:
- I:linebreak $ in header, MusicXML line/pagebreak -> put $ behind barline (or behind barline+volta)
- Command line option [-n xx] now limits the abc line length to xx characters, default = 100
- a <transpose/chromatic> element for a staff is translated into all ABC voices of this staff.
  (e.g, two clarinets notated in one staff -> two transposed ABC voices)

Version 37:
- accidental computation from the <alter> element when no <accidental> element is present
- a message is printed when an accidental is added that was not present as <accidental> element

Version 36:
- text annotations
- fingering, trill-mark wavy-line
- chord symbols (jazz notation, with alterations and bass notes)

Version 35
- translation of the part-list (start/stop-event-based) into proper tree
- translation of partnames + groupnames (and abbreviations) into abc-voice names
- translation of (nested) groups with braces, brackets and barline-continuation
- change to %%score in stead of %%staves
- also look for sound elements as child of a measure

Version 34
- mapping of voices to staves (%%staves) (staff allocation of voices with majority voting)
- clef translation (via staff mapping)
- voice definitions in the abc header with clefs, partnames and -subnames
- braces in staff mapping for multistaff parts
- barnumber in comment field at the end of each line
- abc written to stdout, unless "-o dir" option given

Version 33
- option -n <int> sets the number of bars per line in the ABC output
- the default is 4 bars per line
- explicit line/page breaks in MusicXML take precedence over the default of 4
- suppress redundant key, metre and tempo definitions
- add title (work + movement), composer to header
- read both mxl and xml files
- accept multiple input files and wildcards on the command line.
- make header more ABC compliant
- determine character encoding once on the entire ABC output (latin-1 or utf-8)

Version 32
- multiple lyric lines in all voices (maximum 10 per voice)
- all (non nested) tuplet types supported
- allow slurs to start or end on a grace-note
(however, a slur that starts *and* ends on a grace note is still rejected)
- code clean-up (note-records replaced by note-objects for more flexibility)

Version 30
- added repeats, volta's and barlines
- unfolding of simple repeats is default off and can be turned on with -u on the commandline

Version 28
- code clean-up, tuplet rewrite more efficient

Version 27
- added dynamics
- added cresc/dim wedges (in current voice)
- reject cross stave slurs!
- improved closing of grace sequences
- always insert tempo changes at the start of the current measure in voice 1
- corrected bug when a note both ends and starts a tie.

Version 24
- skip notes that are marked as non printable element
- added global counter object to keep track of all skipped or not properly translated elements
- added ornaments, slurs, grace notes

Version 22
- do not output empty voices (some xml files have non consecutive voice numbering ...)

Version 21
- unpitched note -> just output an E5
- not all sound elements have a tempo definition -> test for tempo
- voice terminates (without forward) in the middle of a measure -> set time again to end of measure
- first latin-1 then utf-8 -> also alow non latin-1 characters
- repeat without begin -> just set begin to the first measure
- better treatment of tuplets

Version 20
- Encode ABC output with the 'latin-1' codec
- Skip note elements without duration (grace notes for the time being)
- Put note elements wihtout voice indication in the top voice of the current part

Version 19
Initial release