mirror of
https://github.com/sshlien/abcmidi.git
synced 2026-02-04 04:38:10 +00:00
abcMIDI-2020.07.06.zip
This commit is contained in:
525
doc/history.txt
Normal file
525
doc/history.txt
Normal file
@@ -0,0 +1,525 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user