This file has not been updated since I have taken over
the support of the abcMIDI package. To see the list
of the latest versions see the readme.txt file. To see
a log of all the changes I have made see the file CHANGES.
The abcguide.txt and the unix (linux) man files (eg. abc2midi.1)
contain the latest user guides. The abcguide.txt probably
contains the most detail. The official version number
of the abcMIDI package is given in the file VERSION.

Seymour Shlien 26 October 2003.
-------------------------------------------------------------


current versions :
midi2abc version 2.4
abc2midi version 1.24
abc2abc version 1.19
yaps    version 1.12

Improvements made to abcMIDI package
------------------------------------
1. abc2midi was found not to handle comments at end of lines properly. 
This was fixed in the source code with release 1.2.1 of abc2midi. 

2. midi2abc was generating %MIDI  instead of %%MIDI for a program change.
This was fixed in release 1.6.1

3. Release 1.2.2 of abc2midi introduced the -c checking only option and
   some new error checking, as well as code to deduce repeats.

4. abc2abc 1.0 was released on 25th July 1996

5. Release 1.2.3 of abc2midi allowed more flexible use of ::, :| and |:,
   improved handling of tuples and other minor improvements.

6. Added #ifdefs for Mac port.

7. Added -xm and -xl options to midi2abc plus a straight quantization
   algorithm for better handling of MIDI output by another package.

8. Added -Q option to midi2abc.

9. Removed the default heuristic algorithm and use a straight quantization 
  algorithm by default, with code to find a good note length by brute-force 
  trial - Original algorithm sometimes made mistakes in quantizing.

10. Added V: field to allow multi-track output from abc2midi in version 1.3

11. Changed Error messages to Warning messages for some error conditions in
   abc2midi.

12. Improved bar length checking to prevent errors being generated by the
   anacrusis in abc2midi.

13. Added checking for equal track lengths in abc2midi.

14. Made midi2abc fail cleanly when it runs out of memory for notes.

15. Fixed part-handling bug in abc2midi.

16. Improved handling of bar placement in midi2abc.

17. Fixed various type inconsistencies in midifile.c to improve portability.

18. abc2midi was not handling propagation of accidentals within a bar e.g.
|^cdc|. This was fixed.

19. Added handling for the 7 key signature modes and re-wrote parsekey in
the process.

20. Fixed bug in hornpipe handling routine (tomidi.c).

21. Fixed bug in default unit calculation (toabc.c).

22. Changed midi2abc to look at last note to decide between equally likely
    key signatures and suggest a mode for the tune if it does not appear
    to be major mode.

23. Changed strchr to index in mftext.c to aid portability.

24. Changed handling of grace notes to report more error conditions.

25. Changed midi2abc to generate voice fields for format 1 files and also
    to assume the same length anacrusis in each voice.

26. -xa option added to midi2abc to deduce anacrusis by looking for a strong
    beat.

27. Release 1.4 of abc2midi allows [ and ] for chords, ( ) for slurs and also 
    introduced a queue mechanism for allowing general polyphony.

28. Release 1.4 of abc2midi appears to a fix a problem with chord generation.

29. Release 1.4 of abc2midi recognizes J, H, L and R as note decorations.

30. Fixed bug in hornpipe routine.

31. Fixed bug in note decoration recognition.

32. Added support for multiple fields in " " and ! ! separated by ; .

33. Fixed problem with grace notes before chords.

34. Added support for new K: field standard

35. Fixed bug that caused spurious ties from notes at the end of a slur
field.

36. Release 1.4.2 of abc2midi made on 15th January 1997.

36. Correction to midi2abc quantization algorithm

37. abc2midi changed to allow TAB character instead of space.

38. -n option added to abc2midi (not the PC version, which already uses 
almost the maximum possible memory).

39. Support added for augmented and diminished chords.

40. Support added for repeats in part notation e.g. P:A(AB)6.

41. Added transpose option to abc2abc.

42. Release 1.4.3 of abc2midi made on 28th April 1997.

43. Added support for w: field in abc2midi

44. Fixed problem in chord handling in abc2abc

45. %%MIDI gchord allowed in mid-tune

46. added %%MIDI chordprog, bassprog, chordvol, bassvol

47. length specifiers allowed in %%MIDI gchord string

48. fixed bar-length checking in abc2abc to do chords and grace notes

49. Made the linebreaking option more intelligent in abc2abc.

50. Made abc2abc linebreak at P:

51. added -u option to abc2abc

52. added %%MIDI control command to abc2midi

53. added support for karaoke MIDI to abc2midi.

54. changed karaoke support to act line by line.

55. Minor bug fix to karaoke support in version 1.5.1

56. Fixed bug in part handling pointed out by Steve Allen.

58. Complete re-write of midi2abc to use dynamic data structures.
version 2.0 (beta) released on 8th June 1998.

59. Added -k (specify key) and -ga (guess anacrusis) options to midi2abc.
Fixed bug in printing rests.

60. version 2.0 of midi2abc released on 12th June 1998.

61. non-portable error diagnosis removed from mftext and midi2abc.

62. midi2abc fixed to always produce legimite length notes.

63. Parser changed to allow arbitrarily long lines.

64. midi2abc changed to recognize rests before each track.

65. midi2abc changed to used c = 72 (and undo abc2midi pitches).

66. Parser changed to allow decorations to be applied to chords.

67. abc2midi changed to allow broken rhythm between chords.

68. abc2midi changed to improve accuracy of reported line numbers.

69. abc2midi mallocs more space for notes or text when needed.

70. support for staccato notes in chord.

71. improved tie handling code.

72. fix to allow all channels to be used (suggested by De Clark).

73. Static limit on number of syllables in w: fields removed.

74. Allowed . in part specifier (P: field in header).

75. Used %%MIDI beat to implement !ppp! to !fff!.

76. Added -o option to abc2midi to specify filename.

77. Corrected problem with Voice/Part conflict reported by Brendan Macmillan.

78. Removed bug in line number generation for error reports.

79. Version 1.5.8 of abc2midi released on 21st Sept 1998.

80. Further bug fixing for Voice/Part problem.

81. Trap buffer overflow in NOFTELL version - problem reported by Richard
Robinson

82. Clean up NOFTELL modifications to remove linker problems (pcc version).

83. New NOFTELL mechanism introduced - do a dummy write track to determine
track length in abc2midi.

84. P:X in the header allowed to be a part marker in abc2midi.

85. Changed save_note() so that chord generation takes account of transpose
- problem report and bug fix by Seymour Shlien

86. Tidied up note off queue handling in abc2midi. Fixes problem with PCC 
version NOFTELL fix.

87. Changed min to long in midi2abc guesslengths(). Fixes PCC divide by 
zero error.

88. Added rtranspose to abc2midi.

89. Cleaned up midi2abc and midifilelib code (no implicit declarations of 
parameter types).

90. Voices inherit global transpose, tempo and meter instead of values from 
previous track.

91. Removed spaces from after tie signs in midi2abc : abc spec. does not 
allow spaces in chords.

92. voicecontext structure introduced to make K: and L: fields local to
their own voice in file parsing stage.

93. printf() fix: DJGPP seems to require %ld and not %Ld in printf to print 
longs.

94. exit value for all codes made 1 on error and 0 on normal termination.

95. re-write of karaoke code to integrate it into main mywritetrack() code.
Also allows multiple verses and has better error-checking.

96. Added %%MIDI chordname and library of named chords to abc2midi

97. Fixed bug in | handling in abc2midi w: field.

98. Better checking for M: field in abc2midi

99. chord handling and broken rhythm handling moved to first pass of
abc2midi.

100. Further bug fixes for abc2midi w: field.

101. %%MIDI nobarlines and %%MIDI barlines options added to abc2midi - 
based on changes suggested by Laura Conrad.

102. Added support for M:none.

103. Voice numbers changed from absolute voice numbers to numerical labels.

104. Accompaniment written to separate track by abc2midi.

105. Support put in the parser for abc2ps's [X: ] inline field notation.

106. Fix to stop bogus Q: fields crashing abc2midi.

107. Support for "_Ignored words" in abc2midi.

108. abc2midi allows voices after voice 1 to be missing in some parts.

109. Changed mf_sec2ticks() in midifile.c to get rid of rounding errors
that were affecting the PCC version of midi2abc.

110. Fixed problem with tracks not starting at time=0 in abc2midi.

111. Fixed overflow problem with long H: fields in abc2midi.

112. [1 allowed to go mid-bar and [2 allowed to be separated from :|
in abc2midi. More robust repeat-fixing algorithm to take account of |1 and 
:|2.

113. Fix to midifile.c suggested by Seymour Shlien to fix problem with
porting to MS visual C++.

114. Added support for trills in abc2midi.

116. Fixed bug in midi2abc that caused it to crash if input MIDI file
     contained long metatext strings.

117. Added support for lyrics to tied notes in abc2midi.

118. Fixed bug that mangled %%MIDI lines in abc2abc and also stopped
     abc2abc filtering out comments outside tune.

119. Added support for clefs in K: field.

120. Replaced K:cclef with proper clefs; baritone, tenor, alto, mezzo
     and soprano.

121. Minor improvements to parseabc.c - recognizes multiple '/' in
     length specifier and warns about c, or C'.

122. Added support for the I: field to parseabc.c and changed abc2midi
     to recognize I:octave=X.

123. Added -d and -v options to abc2abc for changing unit note lengths.

124. Parser changed to report an error for \ * ** or ! in mid music line.

125. midi2abc changed to look for a filename if -f option is missing.

126. part-handling changed in abc2midi to handle an arbitrary number of
     parts.

127. Support for variant endings more complicated than [1 and [2. Also
     allow || to occur mid-bar.

128. Support for Mac-style text files (with \r as end of line).

129. -o and -sum options added to midi2abc by Seymour Shlien.

130. Fixed bug in Part/variant ending interaction in abc2midi.

131. Fixed bug in yaps' handling of in-tune M: fields.

132. Added font selection commands to yaps.

133. Added support for grace notes within broken rhythm to abc2midi.

134. Added page numbering to yaps.

135. Fixed bug in yaps which caused fonts to get lost after a newpage.

136. Added vskip command to yaps.

137. Added %% font and font-spacing commands to yaps.

138. Minor changes to support Pacific C compiler.

139. Added support in yaps for ties and slurs straddling 2 music lines.

140. Added -x (number tunes with number in X: field) to yaps.

150. Fix to yaps to handle guitar chords with characters in the 
range 128-255.

151. Added proper tuple support to yaps - uses half-brackets when notes
in the tuple are not a beamed set.

152. Changed guitar chord transposition in abc2abc to handle A/B and A(B)
as well as not transposing anything with a leading underscore or other
special symbols.

153. Added support for flipping note heads and spacing out accidentals in
yaps.

154. Fix for K: parsing code which was running past the end-of-line character
in some cases and generating extra error messages in abc2midi.

155. Added support for treble-8, treble+8  and similar variants in yaps.

156. Fix for V: fields in header causing abc2midi to crash.

157. Changed K: field parser to accept clef=, octave= and transpose= .

160. Added support for %%staffsep to yaps.

161. Fix to make yaps bar-length checking cope with in-tune metre changes.

162. Changed yaps so that all tune spacing is calculated before output file
     is opened. This is used to generate encapsulated PostScript and to 
     start a new page instead of breaking a tune across pages.

163. Added %%MIDI beatstring to abc2midi  - using code by Martijn Versteegh.

164. Fixed BoundingBox generation in yaps.

165. Added explicit function type declarations and re-ordered some functions
     as well as adding genmidi.h and queues.h to make code compile under
     Pacific C and hopefully improve portability.

166. Added the %%MIDI drum command and !drum! and !nodrum! to abc2midi.

167. Added support for %%titleleft and %%titlecaps to yaps.

168. Fixed crash caused by !drum! with no %%MIDI drum statement.

169. Fixed obscure division by zero error in midi2abc.

170. Added landscape mode to yaps.

171. Shortened tempo note tail length in yaps so that it never collides
     with the title.

172. Corrected positioning of C clef in yaps.

177. Added support for -n X to give X bars per line in abc2abc, with
     correct handling of associated w: field.

178. Added support for dotted rests to yaps.

179. Fixed bug with broken rhythm in yaps.

180. Fixed bug causing abc2abc to crash with comments at end of w: field.
    (code is still not ideal).

181. Created parser2.c for common code between abc2midi and yaps.

182. Made erroneous note-off events a non-fatal error in midi2abc.

184. Added drum track detection to midi2abc, with output that selects
     channel 10 for drums.

185. Removed channel number from midi2abc %%MIDI program output, so that
     abc2midi matches instrument to the correct voice in midi2abc output.

186. Added -s option to midi2abc to retain very short notes.

187. Support for abc2midi to handle very long filenames (provided by
     Colin Watson).

188. Fix to allow abc2midi/abc2abc/yaps parser to handle space between
     key A-G and mode.

189. Fix for abc2midi handling of non-consecutive voice numbers.

190. More user-friendly error message when chord buffer overflows in
     abc2midi.

191. Support for w: line continuation characters in yaps.

192. Fixed problem with trill generation in abc2midi (was the wrong
     length).

193. Fixed inconsistency in midi2abc.c causing a one octave transpose
     if the -k switch was specified.

194. Changed abc2midi to support _, ^, <, > and @ in guitar chords.

195. Added support for /<inversion note> in abc2midi guitar chords.

196. Fix for Q:1/2=X in yaps.

197. Added support for breve notes and breve rests to yaps.

198. Changed yaps to accept rests in tuples.

199. Changed parser to accept tuples written as (n::r .

200. Fix for handling ties across chords in yaps.

201. Improved handling of M:none in yaps.

202. Fixes for bar-length checking in yaps.

203. Added %%MIDI ratio to abc2midi.

204. Applied fix supplied by Ingo Saitz for change of tempo not being 
     handled properly by abc2midi in multi-voice music.

205. Further fix for bar-length checking in yaps.

206. Added code change by Seymour Shlien to midi2abc for -sr option to
handle MIDI with gaps between notes that come out as rests.

207 Added %%chordsabove and %%chordsbelow to yaps.

208. Added handling for U: field (abbreviation) to parser.

209. Fix to abc2midi to stop accidentals in accompaniment chords from
     being applied elsewhere in the bar.

210. Changed K: field parsing so that it only starts a tune if it
     contains a key signature.

211. Trapped condition where double ties could cause segmentation faults
     - thanks to Seymour Shlien for tracing down this problem.

212. Added -t and -n options to abc2midi for better handling of filenames.

213. Made parser more robust when handling L: field - thanks to Seymour
     Shlien for telling me that this could cause division by zero errors.

214. Fix for problem reported by Ronan Keryell - gchord generation now
     works after a meter change in the tune.

215. Added %%MIDI pitchbend command using code supplied by Peter Spath.

216. Modified readstr() in abc2midi/yaps parser to avoid potential buffer
     overflow problem.

217. Added support for strings before and after Q: tempo field in yaps,
     abc2midi and abc2abc. Also added support for yaps to print mid-tune
     tempo change.

218. Added support for N: field to yaps.

219. Fixed problem with channel allocation in abc2midi following bug 
     report from Ronan Keryell.

220. Fixed abc2midi problem with broken rhythm > applied to chords
     thanks to bug report by Ronan Keryell.

221. Added to support for multiple bar rests with Zn notation to
     abc2abc, abc2midi and yaps.

222. Fix to abc2abc guitar chord transposing thanks to bug report by
     Atte Jensen.

223. Fix to handling of reserved characters H-Z in abc2abc following
     bug report by Luis Pablo Gasparotto.

224. Tidied abc2abc code by creating emit_() routines.

225. Fixed bug with broken rhythm marker able to insert itself in tied
     notes. Thanks to Michel Chasseriau for reporting this.

226. Added support for voice filtering (-V option) to abc2abc. Many of
     of the code changes for this were made by Seymour Shlien.

227. Added warning message to abc2midi when T: is found outside a tune.

228. Added -nt option to midi2abc to ignore triplets and broken rhythm.

229. Added -X n option to abc2abc.
