2025-04-25 * Revision: 259 - update documentation - new function scanEdo scans all accidentals and sets the temperament to edo12 or edo53. The result can be overridden with %%MIDI tempermentequal 36 - translate fractional accidentals with denumerator 3 as up/down accidentals (for files with accidentals from both edo36 and edo53, as created by xml2abc --temp=2) 2025-04-23 * Revision: 258 - this version also replaces ^8 and _8, for which no superscripted versions exist, by notes with equivalent pitch, lowering or raising the nearest step with one comma. * Revision: 257 - new option --mus53 that replaces Arel-Ezgi accidentals by superscripted normal ones. The superscriped accidentals appear to be played at the correct pitch by musescore. Also, this option adds explicit notated accidentals to each and every note that was altered, either by the key or by a previous alteration in the same measure. This is necessary because musescore ignores the normal accidental rules for all microtonal accidentals, whether temporary or in the key. 2025-04-15 * Revision: 256 - bug: chords or annotations with spaces caused beam break when between beamed notes - bug: do not sort explicit key alterations - added makam abc files for edo36 and edo53 to the regression set 2025-04-13 * Revision: 255 - seach for "%%MIDI termperamentequal nn" to determine the tuning - change accTab to several tuning mappings - MusicXml.edo variable stores the tuning identification - change getAlter and getAcc to accommodate multiple tunings - add abc2xml to software identification 2025-03-06 * Revision: 254 - added global s.nid that holds the current ABC note for better error messages - changed global dicts into access functions: s.getAcc, s.getAlter with error messages - moved decTupAcc into classMusicXml for better error messages with s.nid - included __ and ^^ in regex for alterations for K: 2025-03-05 * Revision: 253 - small change in alterAction with respect to the effect of slashes - removed redundant brackets from regex "altre" (in doFields, K:) 2025-03-04 * Revision: 252 - new partial grammer for accidental list (for K:) - new function decTupAcc() to decode parsed microtonal accidentals - added microtonal accidentals to alterTab and accTab - key alterations and temporary alterations are remembered as accidentals and not als alterations (alter => acc in msreAlts and keyAlts) - scan K: for microtonal accidentals with new partial grammer - update generation of <key> element with explicit accidentals and alterations 2025-03-02 * Revision: 251 - key alterations not reset on each voice when the header K: has no key 2025-02-28 * Revision: 250 - add sharp, sharp-sharp, flat, flat-flat to accTab - add corresponring accidentals _5, _9, ^4, ^9 to alterTab - in function parse (): initialize attrmap ['K'] with pObj - improve parsing of key field: allow key 'none', allow any word (except a clef name) as mode for the tonic, but only valid mode names are translated 2025-02-26 * Revision: 249 - added parsing grammer for K: (including microtonal accidentals) - new function decTupAcc() to decode microtonal accidentals - added definitions in alterTab and accTab - changed representation in msreAlts and keyAlts: accidentals replace alteration values - changed key processing in doFields to deal with the new parse results of K: - corrected the list of key-octave elements 2025-02-22 * Revision: 248 - the alterAction always results in a tuple as parse result - all places where an accidental is used have to unpack the tuple - the default value of an optional accidental is also a tuple (in percmap grammer) * Revision: 247 abc2xml.py: - add parsing of fractional accidentals (microtonal accidentals). The parse result of a normal accidental remains unchanged. For fractional accidentals the parse result is a tuple (accidental, fraction) parseOnlyTest.py: - move alterAction before leaveWhiteSpace in percmap grammer - make alterAction identical to the one in abc2xml.py - added percmap test 2025-02-21 * Revision: 246 - updated parseOnlyTest to latest parser 2024-08-13 * Revision: 245 - again corrected an escape sequence, this time in pyparsing (always printed syntax warning since python 3.12) 2024-05-02 * Revision: 244 - corrected escape sequences that caused deprecation warnings (and syntax warnings as of python 3.12) 2024-04-11 * Revision: 243 - updated compile/distribute script to Py3 2024-04-10 * Revision: 242 - implement !rbstop!, meaning: the current started volta will be stopped at the next bar line (limitation of MusicXML) * Revision: 241 - bug: incorrect parsing of tilde in lyrics (reported by Gáspár Erdélyi) 2024-02-11 * Revision: 240 - initial-scale bug