1 @c -*- coding: latin-1; mode: texinfo; -*-
3 @node Converting from other formats
4 @chapter Converting from other formats
6 Music can be entered also by importing it from other formats. This
7 chapter documents the tools included in the distribution to do so.
8 There are other tools that produce LilyPond input, for example GUI
9 sequencers and XML converters. Refer to the
10 @uref{http://@/lilypond@/.org,website} for more details.
15 * Invoking convert-ly:: Older LilyPond versions.
16 * Invoking midi2ly:: Importing MIDI.
17 * Invoking etf2ly:: Importing Finale.
18 * Invoking abc2ly:: Importing ABC.
19 * Invoking mup2ly:: Importing MUP.
24 @node Invoking convert-ly
25 @section Invoking @command{convert-ly}
27 The LilyPond input syntax is routinely changed to simplify it or improve
28 it in different ways. As a side effect of this, the LilyPond interpreter
29 often is no longer compatible with older input files. To remedy this,
30 the program @command{convert-ly} can be used to deal with most of the
31 syntax changes between LilyPond versions.
33 It uses @code{\version} statements in the input files to detect the old
34 version number. In most cases, to upgrade your input file it is sufficient
38 covert-ly -e MYFILE.ly
41 If there are no changes to MYFILE.ly and if a file called MYFILE.ly.NEW
42 is created, then MYFILE.ly is already updated.
44 To upgrade LilyPond fragments in texinfo files, use
47 convert-ly --from=... --to=... --no-version *.itely
50 In general, the program is invoked as follows:
53 convert-ly [@var{option}]@dots{} @var{file}@dots{}
57 The following options can be given:
61 Do an inline edit of the input file. Overrides @code{--output}.
63 @item -f,--from=@var{from-patchlevel}
64 Set the version to convert from. If this is not set, @command{convert-ly}
65 will guess this, on the basis of @code{\version} strings in the file.
67 @item -o,--output=@var{file}
68 Set the output file to write.
71 Normally, @command{convert-ly} adds a @code{\version} indicator
72 to the output. Specifying this option suppresses this.
74 @item -s, --show-rules
75 Show all known conversions and exit.
77 @item --to=@var{to-patchlevel}
78 Set the goal version of the conversion. It defaults to the latest
85 @command{convert-ly} always converts up to the last syntax change handled by
86 it. This means that the @code{\version} number left in the file is
87 usually lower than the version of @command{convert-ly} itself.
91 Not all language changes are handled. Only one output option can be
94 @node Invoking midi2ly
95 @section Invoking @command{midi2ly}
99 @command{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond source
102 MIDI (Music Instrument Digital Interface) is a standard for digital
103 instruments: it specifies cabling, a serial protocol and a file
104 format. The MIDI file format is a de facto standard format for
105 exporting music from other programs, so this capability may come in
106 useful when importing files from a program that has a convertor for a
109 @command{midi2ly} converts tracks into @internalsref{Staff} and
110 channels into @internalsref{Voice} contexts. Relative mode is used
111 for pitches, durations are only written when necessary.
113 It is possible to record a MIDI file using a digital keyboard, and
114 then convert it to @file{.ly}. However, human players are not
115 rhythmically exact enough to make a MIDI to LY conversion trivial.
116 When invoked with quantizing (@code{-s} and @code{-d} options)
117 @command{midi2ly} tries to compensate for these timing errors, but is not
118 very good at this. It is therefore not recommended to use @command{midi2ly}
119 for human-generated midi files.
122 It is invoked from the command-line as follows,
124 midi2ly [@var{option}]@dots{} @var{midi-file}
128 The following options are supported by @command{midi2ly}.
131 @item -a, --absolute-pitches
132 Print absolute pitches.
134 @item -d, --duration-quant=@var{DUR}
135 Quantize note durations on @var{DUR}.
137 @item -e, --explicit-durations
138 Print explicit durations.
141 Show summary of usage.
143 @item -k, --key=@var{acc}[:@var{minor}]
144 Set default key. @math{@var{acc} > 0} sets number of sharps;
145 @math{@var{acc} < 0} sets number of flats. A minor key is indicated by
148 @item -o, --output=@var{file}
149 Write output to @var{file}.
151 @item -s, --start-quant=@var{DUR}
152 Quantize note starts on DUR.
154 @item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
155 Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
161 Print version number.
164 Show warranty and copyright.
166 @item -x, --text-lyrics
167 Treat every text as a lyric.
173 Overlapping notes in an arpeggio will not be correctly rendered. The
174 first note will be read and the others will be ignored. Set them all
175 to a single duration and add phrase markings or pedal indicators.
178 @node Invoking etf2ly
179 @section Invoking @command{etf2ly}
184 @cindex Coda Technology
186 ETF (Enigma Transport Format) is a format used by Coda Music
187 Technology's Finale product. @command{etf2ly} will convert part of an ETF
188 file to a ready-to-use LilyPond file.
190 It is invoked from the command-line as follows.
193 etf2ly [@var{option}]@dots{} @var{etf-file}
196 The following options are supported by @command{etf2ly}:
201 @item -o,--output=FILE
202 set output filename to FILE
210 The list of articulation scripts is incomplete. Empty measures
211 confuse @command{etf2ly}. Sequences of grace notes are ended improperly.
214 @node Invoking abc2ly
215 @section Invoking @code{abc2ly}
219 ABC is a fairly simple ASCII based format. It is described at the ABC site:
222 @uref{http://@/www@/.gre@/.ac@/.uk/@/~c.walshaw/@/abc2mtex/@/abc@/.txt}.
225 @command{abc2ly} translates from ABC to LilyPond. It is invoked as follows:
228 abc2ly [@var{option}]@dots{} @var{abc-file}
231 The following options are supported by @command{abc2ly}:
236 @item -o,--output=@var{file}
237 set output filename to @var{file}.
239 print version information.
242 There is a rudimentary facility for adding LilyPond code to the ABC
243 source file. If you say:
246 %%LY voices \set autoBeaming = ##f
249 This will cause the text following the keyword ``voices'' to be inserted
250 into the current voice of the LilyPond output file.
255 %%LY slyrics more words
258 will cause the text following the ``slyrics'' keyword to be inserted
259 into the current line of lyrics.
264 The ABC standard is not very ``standard''. For extended features
265 (e.g., polyphonic music) different conventions exist.
267 Multiple tunes in one file cannot be converted.
269 ABC synchronizes words and notes at the beginning of a line;
270 @command{abc2ly} does not.
272 @command{abc2ly} ignores the ABC beaming.
275 @node Invoking mup2ly
276 @section Invoking @command{mup2ly}
278 Mup (Music Publisher) is a shareware music notation program by Arkkra
279 Enterprises. @command{mup2ly} will convert part of a Mup file to LilyPond
280 format. It is invoked from the command-line as follows:
282 @cindex Music Publisher
287 mup2ly [@var{option}]@dots{} @var{mup-file}
290 The following options are supported by @command{mup2ly}:
294 show what constructs are not converted, but skipped.
295 @item -D, --define=@var{name}[=@code{exp}]
296 define macro @var{name} with opt expansion @code{exp}
297 @item -E,--pre-process
298 only run the pre-processor
301 @item -o,--output=@var{file}
302 write output to @var{file}
306 print warranty and copyright.
312 Only plain notes (pitches, durations), voices, and staves are
317 @section Other formats
319 LilyPond itself does not come with support for other formats, but
320 there are some external tools that also generate LilyPond files.
326 @uref{http://@/denemo@/.sourceforge@/.net/,Denemo}.
328 @uref{http://@/www@/.nongnu@/.org/@/xml2ly/, xml2ly}, that imports
329 @uref{http://@/www@/.musicxml@/.com/,MusicXML}
331 @uref{http://@/rnvs@/.informatik@/.tu@/-chemnitz@/.de/@/~jan/@/noteedit/@/noteedit@/.html,NoteEdit}
332 which imports MusicXML
334 @uref{http://@/www@/.all@/-day@/-breakfast@/.com/@/rosegarden/,Rosegarden},