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 musedata2ly:: Importing Musedata.
20 * Invoking mup2ly:: Importing MUP.
24 @node Invoking convert-ly
25 @section Invoking convert-ly
27 Convert-ly sequentially applies different conversions to upgrade a
28 LilyPond input file. It uses @code{\version} statements in the file to
29 detect the old version number. For example, to upgrade all LilyPond
30 files in the current directory and its subdirectories, use
32 convert-ly -e --to=1.3.150 `find . -name '*.ly' -print`
35 The program is invoked as follows:
37 convert-ly [@var{option}]@dots{} @var{file}@dots{}
41 The following options can be given:
45 Do an inline edit of the input file. Overrides @code{--output}.
46 @item -f,--from=@var{from-patchlevel}
47 Set the level to convert from. If this is not set, convert-ly will
48 guess this, on the basis of @code{\version} strings in the file.
49 @item -o,--output=@var{file}
50 Set the output file to write.
52 Normally, convert-ly adds a @code{\version} indicator
53 to the output. Specifying this option suppresses this.
54 @item -s, --show-rules
55 Show all known conversions and exit.
56 @item --to=@var{to-patchlevel}
57 Set the goal version of the conversion. It defaults to the latest
67 Not all language changes are handled. Only one output option can be specified.
69 @node Invoking midi2ly
70 @section Invoking midi2ly
74 Midi2ly translates a Type 1 MIDI file to a LilyPond source file.
76 MIDI (Music Instrument Digital Interface) is a standard for digital
77 instruments: it specifies cabling, a serial protocol and a file
78 format. The MIDI file format is a de facto standard format for
79 exporting music from other programs, so this capability may come in
80 useful when you want to import files from a program that has no
81 converter for its native format.
83 Midi2ly will convert tracks into @internalsref{Staff} and
84 channels into @internalsref{Voice} contexts. Relative mode is used
85 for pitches, durations are only written when necessary.
87 It is possible to record a MIDI file using a digital keyboard, and
88 then convert it to @file{.ly}. However, human players are not
89 rhythmically exact enough to make a MIDI to LY conversion trivial.
90 midi2ly tries to compensate for these timing errors, but is not very
91 good at this. It is therefore not recommended to use midi2ly for
92 human-generated midi files.
94 Hackers who know about signal processing are invited to write a more
95 robust midi2ly. midi2ly is written in Python, using a module written in
96 C to parse the MIDI files.
98 It is invoked as follows:
100 midi2ly [@var{option}]@dots{} @var{midi-file}
103 The following options are supported by midi2ly:
106 @item -a, --absolute-pitches
107 Print absolute pitches.
108 @item -d, --duration-quant=@var{DUR}
109 Quantize note durations on @var{DUR}.
110 @item -e, --explicit-durations
111 Print explicit durations.
113 Show summary of usage.
114 @item -k, --key=@var{acc}[:@var{minor}]
115 Set default key. @var{acc} > 0 sets number of sharps; @var{acc} < 0
116 sets number of flats. A minor key is indicated by ":1".
117 @item -o, --output=@var{file}
118 Write output to @var{file}.
119 @item -s, --start-quant=@var{DUR}
120 Quantize note starts on DUR.
121 @item -t, --allow-tuplet=@var{DUR}*@var{NUM}/@var{DEN}
122 Allow tuplet durations @var{DUR}*@var{NUM}/@var{DEN}.
126 Print version number.
128 Show warranty and copyright.
129 @item -x, --text-lyrics
130 Treat every text as a lyric.
137 Quantizing start-times and durations should be recommended.
138 This relates to the notes regarding the transcription of a MIDI
139 recording of a performance. I realize it can be done via the utility,
140 but a sequencer gives better visual feedback.
142 Overlapping notes in an arpeggio will not be correctly
143 rendered. The first note will be read and the others will be ignored.
144 Set them all to a single duration and add phrase markings or pedal
148 @node Invoking etf2ly
149 @section Invoking etf2ly
154 @cindex Coda Technology
156 ETF (Enigma Transport Format) is a format used by Coda Music
157 Technology's Finale product. etf2ly will convert part of an ETF
158 file to a ready-to-use LilyPond file.
160 It is invoked as follows:
162 etf2ly [@var{option}]@dots{} @var{etf-file}
165 The following options are supported by etf2ly:
169 @item -o,--output=FILE
170 set output filename to FILE
178 The list of articulation scripts is incomplete. Empty measures confuse
179 etf2ly. Sequences of grace notes are ended improperly sometimes.
182 @node Invoking abc2ly
183 @section Invoking abc2ly
187 ABC is a fairly simple ASCII based format. It is described at the ABC site:
189 @uref{http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt}.
191 abc2ly translates from ABC to LilyPond. It is invoked as follows:
194 abc2ly [@var{option}]@dots{} @var{abc-file}
197 The following options are supported by abc2ly:
202 @item -o,--output=@var{file}
203 set output filename to @var{file}.
205 print version information.
208 There is a rudimentary facility for adding LilyPond code to the ABC
209 source file. If you say:
212 %%LY voices \set autoBeaming = ##f
215 This will cause the text following the keyword ``voices'' to be inserted
216 into the current voice of the LilyPond output file.
221 %%LY slyrics more words
224 will cause the text following the ``slyrics'' keyword to be inserted
225 into the current line of lyrics.
230 The ABC standard is not very ``standard''. For extended features
231 (e.g. polyphonic music) different conventions exist.
233 Multiple tunes in one file cannot be converted.
235 ABC synchronizes words and notes at the beginning of a line; abc2ly does
238 abc2ly ignores the ABC beaming.
240 @node Invoking musedata2ly
241 @section Invoking musedata2ly
246 MuseData (see @uref{http://www.musedata.org/}) is an electronic
247 library of classical music scores, comprising at the time of writing
248 about 800 composition dating from 1700 to 1825. The music is encoded
249 in so-called MuseData format. musedata2ly converts a set of MuseData
250 files to one .ly file, and will include a @code{\header} field if a
251 @file{.ref} file is supplied. It is invoked as follows:
254 musedata2ly [@var{option}]@dots{} @var{musedata-files}
257 The following options are supported by musedata2ly:
262 @item -o,--output=@var{file}
263 set output filename to @var{file}
266 @item -r,--ref=@var{reffile}
267 read background information from ref-file
273 @file{musedata2ly} converts only a small subset of MuseData.
275 @node Invoking mup2ly
276 @section Invoking mup2ly
278 Mup (Music Publisher) is a shareware music notation program by Arkkra
279 Enterprises. Mup2ly will convert part of a Mup file to LilyPond
280 format. It is invoked as follows:
282 @cindex Music Publisher
287 mup2ly [@var{option}]@dots{} @var{mup-file}
290 The following options are supported by 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