mirror of
https://github.com/sshlien/abcmidi.git
synced 2025-12-06 15:05:07 +00:00
526 lines
17 KiB
Plaintext
526 lines
17 KiB
Plaintext
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.
|