view abc2xml/Changes.txt @ 510:0a75c953c3c8 build-default-216

Add the Pugwash theme, aka the Trumpet Hornpipe. I've checked this against YouTube and the first episode, and corrected an obvious wrong note in Paul Hardy's version. But I've kept his descending triplets in the last line of the B tune - the original has the same note, with descending chords, but changing the triplets to remain on G doesn't sound right.
author Jim Hague <jim.hague@acm.org>
date Fri, 01 Aug 2014 23:41:42 +0100
parents 4fab69a1027d
children
line wrap: on
line source

Version 58
- grammer for I:score instruction replaces ad hoc parsing.
- voice merging, part grouping and grand staffs are derived by transformation of the parse tree of I:score.
- also move clef redefinitions after [I:staff +/-n].
- avoid a false beam break when [I:staff +/-n] is used within a beamed note group.
- absolute ABC staff numbers in [I:staff n] are mapped to MusicXML grand staff numbers (when possible).
- added translation of the [+-^_]15 octave clefs.
- no default channel/panning/volume in <midi-instrument> elements.

Version 57
- grand staff implemented.
- in an [I:score] instruction recognize a braced voice group as a grand staff when the opening brace is followed by an asterix ('{*' no space allowed).
- also recognize a normal braced voice group as a grand staff when precisely one of the braced voices has a name.
- the name of a staff or part is taken from the first of its voices (in ABC source order) for which a name is defined.
- within a grand staff notes and directions preceded by [I:staff +/-n] are moved n staffs upwards or downwards.
- accept voice ids with a leading asterix in I:score instructions (for the time being the asterix is discarded, however)

Version 56
- the <grace/> element should come before the <chord/> element in a note. (previously caused syntax warning with FinaleNotepad)
- translates the _8, ^8 variants of the clefs in addition to the +8, -8. Also translates octave= argument of V: and K:
- part names are left empty when not explicitly given using V:id name="<part name>" (previously id was used in that case)
- transpose= was only honoured when a typed clef= definition was present, now is works in any V: or K: field.
- a tempo definition in the ABC header (Q:) is treated as an inline tempo ([Q:]) for the first voice.
- repeated occurrences of [I:MIDI] in a voice are translated into a MusicXML instrument changes for that voice.
  Neither Finale nor Musescore recognize the relevant MusicXML elements (<sound/midi-instrument> and <note/instrument> yet.
- new cue=on/off attribute for K: and V: definitions, to mark sections of cue notes in a voice.
  Neither Finale nor Musescore handle cue size for directions, yet (<level size="cue">).
- normally whole measure rests are discarded when merging staffs. Use option -r to keep these rests in the merged results.

Version 55
- replaced info message text: "leeg" with "empty voice", when skipping an empty voice.
- avoided exception when ABC voice has only one measure containing only a volta number
- do not output an xml-backup element when it has zero duration

Version 54
- allow gracenotes within chords
- discard unbalanced chord brackets (caused a syntax error previously)
- chords containing only rests caused an exception
- ABC-code like: B2 1 caused an exception, now interpreted as: B2/1

Version 53
- tie to a chord with a single note caused an exception.
- a first line with a single measure and only a left bar line caused a syntax error.
- a first line with a single measure with only chords and no bar lines caused a syntax error.
- option -z or --mxl writes an additional compressed xml file with extention .mxl
- better treatment of barlines with spaces interspersed.
- dot after note right before barline caused syntax error (now only warning and skip)

Version 52
- accept and translate chords in a grace sequence (caused an exception previously)
- corrected bug when parsing %%score without space between voice number and left bracket, like %%staves 1(2 3)

Version 51
- treat abc file without any X: as a single tune and prepend X:1
- recognize alto4 as alternative notation for tenor clef

Version 50
- corrected translation of the clef octave change notation (i.e. +8, -8 suffix)

Version 49
- ties between different pitches are converted to slurs (previously the tie in 'A-B A' would extend
to the second A, now there will be a slur between A and B).
- do not add accidentals to tied notes even when present in ABC code.
- use consistent voice numbering in XML when merging ABC-voices with overlays.

Version 48
- M: field with more than one slash caused an exception.
- limit shortest note durations to 1/64
- skip redundant closing slurs (caused exception previously)
- check instrument id when generating MIDI elements (caused exception when errors in %%score)
- issue warning message when illegal user defined characters are used (X,Y,Z,x,y,z)
- use correct xml-syntax for credit elements (was wrong in version 47)
- translate explicit alterations for non traditional keys
(non traditional key signatures not supported by MuseScore, but note alterations are correct)
- skip more illegal symbols in stead of issuing parse error

Version 47
- translate middle=<pitch> in clefs
- translate transpose=<semitones> in clefs (also %%MIDI transpose is recognised)
- translate subname= in V: fields (name= was already translated)
- translate "%%MIDI program" and "%%MIDI channel" (multiple instruments per staff supported)
- an abc file with multiple tunes can be converted to a set of musicxml files.
- new command line option "-m SKIP NUM" to set the range of tunes to be converted for large abc files.
- leading dot was skipped when parsing a float in page format settings (.5in -> 5in)
- accept [r:] syntax for remarks (caused syntax error previously)
- relax syntax for user defined symbols (allowed character set was needlessly restricted)
- all abc meta-info fields are translated to credit tags (with type)

Version 46
- warn when unit length is a single integer and assume L:1/8 (caused exception previously)
- translate tune with only header fields (caused exception previously)
- translate tunes where first voice definition appears in the middle of the body (caused exception previously)
- skip illegal characters in chords and issue warning (caused syntax error previously)
- skip illegal U: field in body and issue warning (caused syntax error previously)
- more illegal characters between elements are skipped but with less specific warnings.
- line endings with only <cr> were not handled properly
- add check for text without any abc code in it (caused exception previously)
- conversion of pObj to string caused exception when it contained non latin-1 characters (e.g. in warning messages)

Version 45
- ignore old style continuation when next line is w:
- replace illegal durations by the nearest smaller legal one (caused exception previously)
- when multiple stave mappings keep only first one and issue warning
- accept start of next tune (X:) when not preceeded by an empty line (caused syntax error previously)
- warn when unit length is no fraction of integers and assume L:1/8 (caused exception previously)
- raise meaningful exception when the tune is empty (e.g. empty line after K:)
- broken rhythm involving a rest was not translated

Version 44
- translate volta brackets with quoted text (in addition to numbers and number ranges)
- when error in M: field assume 4/4. (caused exception previously)
- allow voice names with underscore
- bug in parsing %%score when no space between two stave groups, like: (v1 v2)(v3 v4)
- corrected merging of voices of unequal length (caused exception previously)
- user defined symbols with '()<>.' chars were not accepted
- when p was a user defined symbol also !p! was erroneously seen as used defined
- skip random text before tune starts (caused syntax error previously)

Version 43
- more non standard bar lines recognized (e.g. :])
- accept X: fields when the tune number is followed by non-numeric chars.
- allow complex meter (M:2+2+3/8)
- warn for illegal L: fields (like L:1/6) and use 1/8 instead
- accept and skip E: field
- wedge close was not recognized when written with old '+' notation (bug was in fixSlurs)
- remove * and ** at end of line (probably old notation for right adjustment)
- accept and ignore a Q:-field with only text
- replace "Expected end of text at .." message from parser by "Syntax error at .."

Version 42
- translate tempo from Q: field
- translate -8 in key or voice field (temporary fix)
- accept empty text annotations
- in addition to !<(! also accept !crescendo(! and the same for diminuendo
- ignore line continuation after information field
- in lyrics treat isolated tildes as note skips
- encode parse error message in utf-8 and when that fails in latin-1
- limit length of misplaced symbol message to 80 chars
- put text between K: and first V: into the header (was skipped previously)
- bug in %%score when no spaces around '|'-character
- added "o" as alternative for dim ("Edim7" = "Eo7")
- in chord symbols "+" and "-" were not always translated correctly
- tuple abbreviation (n:: and (n::m were not translated correctly
- dotted barlines translated (: .|)

Version 41
- translate (multi-)measure rests: Z, X
- discard misplaced broken symbols (no more exceptions)
- discard misplaced octave suffices (warning, no parse error)
- discard misplaced header fields (warning, no parse error after K:)
- show location of misplaced symbols
- only parse header if it is not empty (-> better error messages)
- accept score/stave-directives and page formatting also in body

Version 40
- when reading a file with multiple tunes only translate the first one
- command line option added for scale, page size and margins
- all %% directives are changed into I: fields
- translate scale, page size and margins from ABC directives, but command line overrides

Version 39
- accept and discard rests in chords
- accept and discard accidentals before rests
- spacer is treated as a normal note but discarded
- accept chords with only one note
- invisible rests (x) are translated as invisible in xml too.

Version 38
- also recognise ma and mi in chord symbols (e.g. Cma7, Cmi7)
- replace tildes in lyrics by spaces
- accept syllabi starting with a tilde
- accept space after V: 1

Version 37
- accidental elements are written whenever an explicit accidentals are present in ABC (for finale, mscore does not need them)
- tuplet notation elements are written to mark begin and end of tuplet (for finale, mscore doet not need them)
- normal-type elements are written when tuplets are irregular
- issue understandable message when metre is not recognized
- take (compound) metre into account when translating tuplet shorthands (as described in ABC 2.1)
- do not add beaming-elements into rest-elements (still break beam when long rest in beamgroup).

Version 36
- volta-stop elements were somtimes (recognised at and) put into a left-bar element, which
is not valid MusicXML. These elements are now put into the right-bar of the previous measure.
- accept volta's without barline: "abc [1 def" is read as: "abc |[1 def"
- accept volta's after redundant left barline: "abc |\n|[1 def" is read as "abc |\n[1 def"
- changed document order of repeat and ending elements (MusicXML order requirement)
- xml output to stdout is also encoded in utf-8 (was erroneously done in latin-1)
- prevent finale detecting the string "xml" in the <software>-tag (finale quirk)
- only issue a <supports>-tag when abc code really uses explicit linebreaks

Version 35
- recognise and translate (nested) braces and brackets in both %%staves and %%score
- translate more keys (maj, min, mix, dor, phr, lyd, loc and none)
- recognise and skip [I:...] in body
- invisible bar lines translated
- silently skip slur end when there is no corresponding slur begin
- also accept user defined symbols delimited by +
- limit length of syntax error message (in a way compatible with pyparsing internal administration)
- add <identification/encoding/supports> tag, because Finale seems to expect it.

Version 34
- removed copy() from 2 parse expressions because it did not appear to work on Linux
- recognize, warn and skip misplaced accidentals and ties
- bug in old style continuation when there was nothing left to continue with.
- limit syntax error output to 80 chars, with error in the middle.

Version 33
- added !coda!, !segno!, !fine!, !dacoda!, !dalsegno! etc.
- move coda and segno when just before a barline to next measure
- added several ornaments and articulations.
- recognize (and skip) '<' and '>' position markers for text expressions
- fall back to text expression for unrecognized chord symbols.
- recognize (and skip) alternative chord symbols between brackets
- interpret expressions like "ABC" as text expression and not as misspelled chord symbol.
- beam detection improved (grammar)

Version 32
- grammar for both linebreaks ! and $ without ambiguities!
- remove commandline option for linebreak (also I:linebreak not needed anymore)
- accept both + and ! for deco's
- accept (and skip) empty fields
- accept ']' in all header fields
- strip leading and trailing spaces from header fields (T: title -> T:title)
- also translate inline fields before a left barline
- recognise volta after forward repeat
- translate dashes to comma's in volta ([1-3 -> [1,3)
- recognise slurs after broken rhythm symbols i.e. replace (ab>>)c -> (ab)>>c
- skip P: fields
- allow lines with a single measure without barline
- combine ~-syllabi (multiple syllabi under one note)
- skip W: lyrics because no musicXML equivalent
- translate longa and breve

Version 31
- bug in treatment of double-repeat when it is at the end of a voice-lyrics block
- added <DOCTYPE> declaration because Finale seems to need it.
- added identification/encoding element so people can see what software made the file

Version 30
- voice overlays
- merging voices rewritten: lyrics renumbering, measurewise merging
- linebreak after left-bar is output directly (i.e. not postponed to the next measure)

Version 29
- implementation of beaming
- insert line breaks at start of next measure
- keep only one line break per measure when mapping multiple voices
- renumber slurs when clash occurs during voice mapping
- syntax error message is encoded in latin-1
- bug in recognition of presence of open tie

Version 28
- all chord symbols were erroneously recognized as text annotations (wrong syntax priority)
- Recognize (and skip) redundant left side bars
- don't stumble on a double repeat (::) when it occurs at the and of a voice/lyrics block
- better error message when header fields appear after the first K:
- output of non latin-1 strings on stderr uses repr()

Version 27
- Initial release