1ABC2MIDI(1) General Commands Manual ABC2MIDI(1)
2
3
4
6 abc2midi - converts abc file to MIDI file(s)
7
9 abc2midi infile [refnum] [-c] [-v] [-ver] [-t] [-n limit] [-RS]
10 [-quiet] [-Q tempo] [-NFNP] [-OCC] [-o outfile]
11
13 The default action is to write a MIDI file for each abc tune
14 with the filename <stem>N.mid, where <stem> is the filestem
15 of the abc file and N is the tune reference number. If the -o
16 option is used, only one file is written. This is the tune
17 specified by the reference number or, if no reference number
18 is given, the first tune in the file.
19
21 refnum process the tune with reference number refnum
22
23 -c selects checking only
24
25 -v selects verbose option
26
27 -ver prints version number and exits
28
29 -t selects filenames derived from tune titles
30
31 -RS use 3:1 instead of 2:1 for broken rhythms
32
33 -quiet Suppresses some commong warnings.
34
35 -n X limits the length of the file name stem to X characters
36
37 -Q tempo
38 sets the default tempo in quarter notes per minute if it was not
39 specified in the abc header.
40
41 -NFNP Ignore any dynamic indications !f! !ff! etc.
42
43 -OCC Accept old chord convention (eg +D2G2+ instead of [DG]2).
44
45 -o outfile
46 write output to outfile
47
49 * Broken rythms (>, <), chords, n-tuples, slurring, ties, staccatto
50 notes, repeats, in-tune tempo/length/time signature changes are all
51 supported.
52
53 * R:hornpipe or r:hornpipe is recognized and note timings are adjusted
54 to give a broken rhythm (ab is converted to a>b).
55
56 * Most errors in the abc input will generate a suitable error message
57 in the output and the converter keeps going.
58
59 * Comments and text fields in the abc source are converted to text
60 events in the MIDI output
61
62 * If guitar chords are present, they are used to generate an accompani‐
63 ment in the MIDI output.
64
65 * If there are mis-matched repeat signs in the abc, the program
66 attempts to fix them. However, it will not attempt this if a multi-part
67 tune description has been used or if multiple voices are in use.
68
69 * Karaoke MIDI files can be generated by using the w: field to include
70 lyrics.
71
72 * Nonnumeric voice id's, eg. V: soprano, as proposed for the new abc
73 standard is accepted.
74
75 * Invisible rests specified by x are treated the same way as normal
76 rests (z).
77
78 * Decorations may be indicated using either the deprecated notation
79 (eg. !fermata!) or the standard version 2.0 notation (eg. +fermata+).
80
82 * No field is inherited from above the X: field of the tune.
83
84
85
87 * There are some extensions to the abc syntax of the form
88
89 %%MIDI channel n
90
91 These control channel and program selection, transposing and various
92 other features of abc2midi.
93
94 Each of these should appear on a line by itself. All of them are
95 allowed within the abc tune body. By using these in combination with
96 the part notation, one can, for example, play a part transposed or in a
97 different key.
98
99 The idea behind this syntax is that other programs will treat it as a
100 comment and ignore it.
101
102 %%MIDI channel n
103
104 selects melody channel n (in the range 1-16).
105
106 %%MIDI program [c] n
107
108 selects program n (in the range 1-128) on channel c. If c is not given,
109 the program is selected on the current melody channel. Most modern tone
110 generators follow the General MIDI standard which defines the instru‐
111 ment type for each program number.
112
113 %%MIDI beat a b c n
114
115 controls the way note velocities are selected. The first note in a bar
116 has velocity a. Other "strong" notes have velocity b and all the rest
117 have velocity c. a, b and c must be in the range 0-128. The parameter n
118 determines which notes are "strong". If the time signature is x/y, then
119 each note is given a position number k = 0, 1, 2 .. x-1 within each
120 bar. Note that the units for n are not the unit note length. If k is a
121 multiple of n, then the note is "strong". The volume specifiers !ppp!
122 to !fff! are equivalent to the following :
123
124 !ppp! = %%MIDI beat 30 20 10 1
125 !pp! = %%MIDI beat 45 35 20 1
126 !p! = %%MIDI beat 60 50 35 1
127 !mp! = %%MIDI beat 75 65 50 1
128 !mf! = %%MIDI beat 90 80 65 1
129 !f! = %%MIDI beat 105 95 80 1
130 !ff! = %%MIDI beat 120 110 95 1
131 !fff! = %%MIDI beat 127 125 110 1
132
133
134 %%MIDI beatmod n
135
136 Increments by n (or decrements if n is negative) the velocities a, b
137 and c described above. The instructions !crescendo(! and !crescendo)!
138 are equivalent to inserting a %%MIDI beatmod 15 whereever they occur.
139 (Alternatively you can use !<(! and !<)!.) Similarly the instructions
140 !diminuendo(! and !diminuendo)! are equivalent to %%MIDI beatmod -15.
141
142
143 %%MIDI deltaloudness n
144
145 where n is a small positive number. By default the crescendo and
146 diminuendo instructions modify the beat variables a, b, and c by 15
147 velocity units. This instruction allows you to set this default to
148 value n.
149
150
151 %%MIDI nobeataccents
152
153 For instruments such as church organ that have no greatly emphasized
154 beat notes, using this will force use of the 'b' velocity (see %%MIDI
155 beat) for every note irrespective of position in the bar. This allows
156 dynamics (ff, f, etc) to be used in the normal way.
157
158 %%MIDI beataccents
159
160 Revert to emphasizing notes the the usual way. (default)
161
162
163 %%MIDI beatstring <string of f, m and p>
164
165 This provides an alternative way of specifying where the strong and
166 weak stresses fall within a bar. 'f' means velocity a (normally
167 strong), 'm' means velocity b (medium velocity) and 'p' means velocity
168 c (soft velocity). For example, if the time signature is 7/8 with
169 stresses on the first, fourth and sixth notes in the bar, we could use
170 the following
171
172 %%MIDI beatstring fppmpmp
173
174 %%MIDI transpose n
175
176 transposes the output by the specified number of semitones. n may be
177 positive or negative.
178
179 %%MIDI rtranspose n
180
181 Relative transpose by the specified number of semitones. i.e. %%MIDI
182 transpose a followed by %%MIDI rtranspose b results in a transposition
183 of a+b. %%MIDI transpose b will result in a transposition of b semi‐
184 tones, regardless of any previous transposition.
185
186 %%MIDI c n
187
188 specifies the MIDI pitch which corresponds to c. The default is 60.
189 This number should normally be a multiple of 12.
190
191 %%MIDI grace a/b
192
193 sets the fraction of the next note that grace notes will take up. a
194 must be between 1 and b-1. The grace notes may not sound natural in
195 this approach, since the length of the individual grace notes vary with
196 the complexity of the grace and the length of the following note. A
197 different approach (which is now the default) assumes that the grace
198 notes always have a fixed duration. To use the other approach you
199 would specify,
200
201 %%MIDI gracedivider b
202
203 where b specifies how many parts to divide the unit length specified by
204 the L: field command. For example if b = 4 and L: = 1/8, then every
205 grace note would be 1/(8*4) or a 32nd note. Time would be stolen from
206 the note to which the grace notes are applied. If that note is not long
207 enough to handle the grace then the grace notes would be assigned 0
208 duration.
209
210
211
212
213 %%MIDI chordname name n1 n2 n3 n4 n5 n6
214
215 Defines how to play a guitar chord called "name". n1 is usually 0 and
216 n2, n3 to n6 give the pitches of the other notes in semitones relative
217 to the root note. There may be fewer than 6 notes in the chord, but not
218 more.If "name" is already defined, this command re-defines it. Unlike
219 most other commands, chordname definitions stay in effect from where
220 they are defined to the end of the abc file. The following illustrates
221 how m, 7, m7 and maj7 could be set up if they were not already defined.
222
223 %%MIDI chordname m 0 3 7
224 %%MIDI chordname 7 0 4 7 10
225 %%MIDI chordname m7 0 3 7 10
226 %%MIDI chordname maj7 0 4 7 11
227
228 %%MIDI gchord string
229
230 sets up how guitar chords are generated. The string is a sequence made
231 of of z's, c's f's and b's for rests, chords, fundamental and funda‐
232 mental plus chord notes respectively. This specifies how each bar is
233 to be played. An optional length is allowed to follow the z's, c's f's
234 and b's e.g. czf2zf3. If the abc contains guitar chords, then
235 abc2midi automatically adds chords and fundamentals after encountering
236 the first guitar chord. It keeps using that chord until a new chord is
237 specified in the abc. Whenever the M: field is encountered in the abc,
238 an appropriate default string is set :
239
240 For 2/4 or 4/4 time default is equivalent to : %%MIDI gchord fzczfzcz
241
242 For 3/4 time default is equivalent to : %%MIDI gchord fzczcz
243
244 For 6/8 time default is equivalent to : %%MIDI gchord fzcfzc
245
246 For 9/8 time default is equivalent to : %%MIDI gchord fzcfzcfzc
247
248 The gchord command has been extended to allow you to play the individ‐
249 ual notes comprising the guitar chord. This allows you to play broken
250 chords or arpeggios. The new codes g,h,i,j, G,H,I,J reference the indi‐
251 vidual notes starting from the lowest note of the chord (not necessar‐
252 ily the root in the case of inversions). For example for the C major
253 chord, g refers to C, h refers to E and i refers to G. For a gchord
254 command such as,
255
256 %%MIDI gchord ghih
257
258 Abc2midi will arpeggiate the C major guitar chord to CEGE. The upper
259 case letters G,H,I, and J refer to the same notes except they are
260 transposed down one octave. Note for the first inversion of the C major
261 chord (indicated by "C/E"), E would be the lowest note so g would ref‐
262 erence the note E.
263
264 Like other gchord codes, you may append a numeral indicating the dura‐
265 tion of the note. The same rules apply as before. You can use any com‐
266 bination of the gchord codes, (fcbghijGHIJz).
267
268
269
270 %%MIDI chordprog n
271
272 Sets the MIDI instrument for the chords to be n.
273
274 %%MIDI bassprog n
275
276 Sets the MIDI instrument for the bass notes to be n.
277
278 %%MIDI chordvol n
279
280 Sets the volume (velocity) of the chord notes at n.
281
282 %%MIDI bassvol n
283
284 Sets the volume (velocity) of the bass notes at n. There is no corre‐
285 sponding melodyvol command since there are 3 velocity values for
286 melody, set using the beat command.
287
288 %%MIDI gchordon
289
290 Turns on guitar chords (they are turned on by default at the start of a
291 tune).
292
293 %%MIDI gchordoff
294
295 Turns off guitar chords.
296
297 %%MIDI droneon
298
299 Turns on a continuous drone (used in bagpipe music) consisting of two
300 notes. By default the notes are A, and A,, played on a bassoon at a
301 velocity of 80. This can be configured by the %%MIDI drone command
302 described below.
303
304 %%MIDI droneoff
305
306 Turns off the continous drone.
307
308 %%MIDI drone n1 n2 n3 n4 n5
309
310 Sets the drone parameters where n1 is the MIDI program, n2 and n3 spec‐
311 ify the MIDI pitches of the two notes in the chord, and n4 and n5 spec‐
312 ify the MIDI velocities of the two notes. If you do not set these
313 parameters they are by default 70 45 33 80 80. A value of zero or less
314 indicates that the setting of this parameter should be left as it is.
315
316 %%MIDI drum string [drum programs] [drum velocities]
317
318 This sets up a drum pattern. The string determines when there is a drum
319 beat and the drum program values determine what each drum strike sounds
320 like.
321
322 e.g. %%MIDI drum d2zdd 35 38 38 100 50 50
323
324 The string may contain 'd' for a drum strike or 'z' for a rest. By
325 default a voice starts with no drum pattern and '%%MIDI drumon' is
326 needed to enable the drumming. The drum pattern is repeated during each
327 bar until '%%MIDI drumoff' is encountered. The %%MIDI drum command may
328 be used within a tune to change the drum pattern. This command places
329 the drum sounds on channel 10 and assumes your tone generator complies
330 with the General Midi standard - if it does not, then you may hear
331 tones instead of drum sounds.
332
333 In both the gchord and drum commands, the standard note length of a
334 single note f,c,z or d is not set by the L: command. Instead it is
335 adjusted so that the entire gchord string or drum string fits exactly
336 into one bar. In other words the duration of each note is divided by
337 the total duration of the string. This means that, for example, the
338 drum string "dd" is equivalent to drum string "d4d4". You cannot cur‐
339 rently specify fractions directly (eg. C3/2) as done in the body of the
340 music, but it is still possible to express complex rhythms. For exam‐
341 ple, to indicate a rhythm such as (3ddd d/d/d/d, you would write the
342 string "d4d4d4d3d3d3d3".
343
344
345
346 With version 1.54 Dec 4 2004 of abc2midi, notes in chords (eg. [FAc])
347 are not played in the same instant but offsetted and shortened by 10
348 MIDI time units. Thus the first note in the chord (eg. F) is played for
349 the full indicated time, the second note (eg. A) starts 10 MIDI units
350 later and is shortened by the same amount and the third note starts
351 another 10 MIDI units later and is shortened by another 10 units. This
352 introduces an "expressivo" option and avoids the heavy attack. (This
353 does not apply to gchords or multivoiced chords.) The amount of the
354 delay and shortening may be configured by the MIDI command
355
356
357 %%MIDI chordattack n
358
359
360 where n is a small number. If n is zero, then abc2midi should behave as
361 in earlier versions. The delay n is in MIDI time units where there are
362 480 units in a quarter note beat. The program may not run correctly if
363 n is too large and there are short chords.
364
365
366 %%MIDI randomchordattack n
367
368 Like above except that the delay is a random variable uniformly dis‐
369 tributed between 0 and n-1.
370
371
372 %%MIDI trim x/y
373
374 where x and y are two numbers. This command controls the articulation
375 of notes and chords by placing silent gaps between the notes. The
376 length of these gaps is determined by x/y and the unit length specified
377 by the L: command. These gaps are produced by shortening the notes by
378 the same amount. If the note is already shorter than the specified
379 gap, then the gap is set to half the length of the note. The fraction
380 x/y indicates a note duration in the same manner as specified in the
381 abc file. The actual duration is based on the unit length specified by
382 the L: field command. It is recommended that x/y be a fraction close to
383 zero. Note trimming is disabled inside slurs as specified by parenthe‐
384 ses. You can turn off all note trimming by setting x to 0, eg 0/1. By
385 default, note trimming is turned off at the beginning of a tune or
386 voice command.
387
388
389
390 %%MIDI drummap note midipitch
391
392 Please see abcguide.txt.
393
394
395
397 The proposed standard introduces a new copyright field using the syntax
398
399
400 %%abc-copyright (c) Copyright John Smith 2003
401
402
403 Abc2midi now inserts this in the MIDI file in the form of a metatext
404 copyright tag. Changes were made to the event_specific function in
405 store.c to process the copyright information. It is also copied into
406 the Karaoke track (if it is created) as as @T field.
407
408
410 abc2ps(1), midi2abc(1), yaps(1).
411
413 James Allwright <J.R.Allwright@westminster.ac.uk>
414
416 by Seymour Shlien <seymour.shlien@crc.ca>
417
419 This man page describes abc2midi version 1.85 June 25 2006.
420
422 Copyright 1999 James Allwright
423
424 abc2midi is supplied "as is" without any warranty. It is free software
425 and can be used, copied, modified and distributed without fee under the
426 terms of the GNU General Public License.
427
428 More complete documentation may be found in abcguide.txt which comes
429 with the abcMIDI distribution.
430
431
432
433 25 June 2006 ABC2MIDI(1)