英雄联盟正规

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

LilyPond
LilyPond-logo-with-music.png
Fibonacci composition.svg
Developer(s) David Kastrup, Werner Lemberg, Han-Wen Nienhuys, Jan Nieuwenhuizen, Carl Sorensen, Janek Warchoł, et al. [1]
Initial release 1996 ; 26 years ago  ( 1996 )
Stable release
2.22.2 [2]   Edit this on Wikidata / 22 February 2022
Preview release
2.23.11 [3]   Edit this on Wikidata / 24 July 2022
Repository
Written in C++ , Scheme , Metafont , PostScript , Python [4]
Operating system
Size 20–100 MB
Standard (s) EPS , MIDI , MusicXML , PDF , PS , SVG
Available in English, Catalan, Dutch, French, German, Hungarian, Italian, Japanese, Spanish
Type Music software , scorewriter
License GPL-3.0-or-later [6]
Website lilypond .org   Edit this on Wikidata

LilyPond is a computer program and file format for music engraving . One of LilyPond's major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand.

LilyPond is cross-platform , and is available for several common operating systems ; released under the terms of the GNU General Public License , LilyPond is free software and part of the GNU Project .

History [ edit ]

The LilyPond project was started in 1996 by Han-Wen Nienhuys and Jan Nieuwenhuizen, after they decided to abandon work on MPP ( MusiXTeX PreProcessor), a project they began collaborating on in 1995. [7] [8] Its name was inspired both by the Rosegarden project and an acquaintance of Nienhuys and Nieuwenhuizen named Suzanne, a name that means lily in Hebrew ( שׁוֹשַׁנָּה ). [9]

Version 1.0 [ edit ]

LilyPond 1.0 was released on July 31, 1998, highlighting the development of a custom music font, Feta, and the complete separation of LilyPond from MusiXTeX. [10]

Version 2.0 [ edit ]

LilyPond 2.0 was released on September 24, 2003, announcing a simplified syntax model and a much more complete set of facilities for notating various styles of music. [11]

Design [ edit ]

Screenshot of LilyPond running on Linux

LilyPond is mostly written in C++ and uses Scheme (interpreted by GNU Guile ) as its extension language, allowing for user customization. [12] It has a relatively large codebase; as of March 10, 2017, the source includes over 600,000 lines of C++, 140,000 lines of Scheme, and 120,000 lines of Python code. [13]

It uses a simple text notation for music input, which LilyPond interprets and processes in a series of stages. [14] In the final stage, music notation is output to PDF (via PostScript ) or other graphical formats, such as SVG or PNG . LilyPond can also generate MIDI files that correspond to the music notation output.

LilyPond is a text-based application , so it does not contain its own graphical user interface to assist with score creation. (However, a text-editor based "LilyPad" GUI for Windows and MacOS is included by default on these systems.) It does, however, have a flexible input language that strives to be simple, easing the learning curve for new users. LilyPond adheres to the WYSIWYM paradigm; the workflow for typesetting music notation with LilyPond is similar to that of preparing documents with LaTeX .

LilyPond supports experimental musical notation . Its guitar facilities support alternative tunings , such as major-thirds tuning . [15]

Software features [ edit ]

Beethoven 's Symphony No. 5 music sheet printed from a digitally engraved PDF file produced by LilyPond; released by the Mutopia Project

LilyPond's primary goal is to produce output comparable to professionally engraved scores instead of output that looks mechanical and computer-generated. An essay from the LilyPond website, written by LilyPond developers, explains some typographical issues addressed by LilyPond: [16]

  • Optical font scaling : depending on the staff size, the design of the music font is slightly altered; this is a feature that Donald Knuth's Computer Modern font is known for. As a result, note heads become more rounded, and staff lines become thicker.
  • Optical spacing : stem directions are taken into account when spacing subsequent notes.
  • Special ledger line handling : ledger lines are shortened when accidentals are nearby, thus enhancing readability.
  • Proportional spacing : notes can be positioned in such a way that exactly reflects their duration. For example, with this setting, the space between consecutive quarter notes is four times greater than between consecutive sixteenth notes . [17]

Overview of input syntax [ edit ]

The native input language for LilyPond is comprehensive, and consists of many commands needed for expressing any sort of articulation, dynamic, meter, etc. It is similar to that of TeX . The ability to embed Scheme code within a LilyPond source file permits arbitrary extensions to the input language and assists with algorithmic composition . Some general syntactic features are listed below.

  • Single-line comments begin with a percent sign % . [18]
  • Notes are represented in pitch-duration format: pitch is specified with Helmholtz pitch notation , and duration is specified with a numeral based system. The semantics of the pitch-duration format change depending on the active input mode; this is explained in depth in the LilyPond manual. For example, in absolute mode, a'4 is an A, one octave up from the base A (A3 in scientific pitch notation ), of quarter note length. [19]
  • Commands usually begin with a backslash (such as \time , or \slurUp ). The function of the command in question determines where the command is placed; for example, if the command is used to indicate a fixed dynamic on a specific note, it is placed after the note. [20]
  • Some common commands are represented symbolically to ease typing. One example is with slurs , where ( and ) indicate the beginning and ending of a slur, respectively. [21] Another example is with manual beaming , where [ and ] indicate the extent of the beam. [22]

LilyPond's interface with Pango requires the input character encoding to be UTF-8 . [23] One benefit of this is that more than one language can be included in the same source file.

Example of LilyPond input file [ edit ]

		
		
			\version
		
		"2.22.2"
		
			\include
		
		"english.ly"
		
			\header
		
		
			{
		
		title =
		
			\markup
		
		
			{
		
		"Excerpt from"
		
			\italic
		
		"fibonacci"
		
			}
		
		composer = "Patrick McCarty"
		
			% copyright = \markup \fontsize #-5
		
		
			% {
		
		
			% Copyright © 2009.
		
		
			% Typeset with GNU LilyPond.
		
		
			% Released into public domain by the composer.
		
		
			% }
		
		
			}
		
		
			\paper
		
		
			{
		
		paper-height = 4.6
		
			\in
		
		paper-width = 8.5
		
			\in
		
		indent = #0 system-count = #2
		
			}
		
		
			\score
		
		
			{
		
		
			\new
		
		PianoStaff = "pianostaff" <<
		
			\new
		
		Staff = "RH"
		
			\relative
		
		c'
		
			{
		
		
			\accidentalStyle
		
		Score.piano
		
			\clef
		
		"treble"
		
			\time
		
		2/4
		
			\set
		
		Score.currentBarNumber = #51
		
			\tempo
		
		"Slow and steady" 4 = 60
		
			4
			
				\acciaccatura
			
			
				{
			
			cs16[ ds]
			
				}
			
			
				4 |
				
					% m. 51
				
				
					4
					
						\acciaccatura
					
					
						{
					
					e16[ ds]
					
						}
					
					
						4 |
						
							% m. 52
						
						
							4
							
								\acciaccatura
							
							
								{
							
							ds16[ cs]
							
								}
							
							
								4 |
								
									% m. 53
								
								
									4
									
										\acciaccatura
									
									
										{
									
									ds16[ e]
									
										}
									
									
										4 |
										
											% m. 54
										
										
											4
											
												\acciaccatura
											
											
												{
											
											cs16[ ds]
											
												}
											
											e16 f gs a |
											
												% m. 55
											
											
												8
												
													\acciaccatura
												
												
													{
												
												as16[ gs]
												
													}
												
												
													8 ~
													
														16 ds b as |
														
															% m. 56
														
														b16 d8 bf32 f' g16 af bf c |
														
															% m. 57
														
														
															16 ( c af )
															
																( ds b )
																
																	( ds |
																	
																		% m. 58
																	
																	
																		\time
																	
																	3/4
																	
																		16 )
																		
																			\noBeam
																		
																		d,16 f gs a16 e f b c16 d, ( f gs |
																		
																			% m. 59
																		
																		a16 b ) e, ( f gs16 b c ) f, ( gs16 as b c ) |
																		
																			% m. 60
																		
																		
																			}
																		
																		
																			\new
																		
																		Dynamics = "Dynamics
																		
																			_
																		
																		pf"
																		
																			{
																		
																		s4
																		
																			\p
																		
																		
																			\<
																		
																		s4 |
																		
																			% m. 51
																		
																		s4 s4 |
																		
																			% m. 52
																		
																		s4
																		
																			\mp
																		
																		
																			\>
																		
																		s4 |
																		
																			% m. 53
																		
																		s4 s4
																		
																			\!
																		
																		|
																		
																			% m. 54
																		
																		s4
																		
																			\p
																		
																		s4 |
																		
																			% m. 55
																		
																		s1 * 2/4 |
																		
																			% m. 56
																		
																		s4
																		
																			\<
																		
																		s4 |
																		
																			% m. 57
																		
																		s4 s4 |
																		
																			% m. 58
																		
																		
																			\override
																		
																		DynamicText.extra-spacing-width = #'(-0.75 . 0.75) s16
																		
																			\mf
																		
																		s16
																		
																			\p
																		
																		s8 s4 s4 |
																		
																			% m. 59
																		
																		s2. |
																		
																			% m. 60
																		
																		
																			}
																		
																		
																			\new
																		
																		Staff = "LH"
																		
																			\relative
																		
																		c,
																		
																			{
																		
																		
																			\clef
																		
																		"bass"
																		
																			\time
																		
																		2/4 cs4. cs8 |
																		
																			% m. 51
																		
																		cs4. d8 |
																		
																			% m. 52
																		
																		f4. a8 |
																		
																			% m. 53
																		
																		f4. d8 |
																		
																			% m. 54
																		
																		cs4. cs8 |
																		
																			% m. 55
																		
																		d4 ds |
																		
																			% m. 56
																		
																		gs4. bf,8 |
																		
																			% m. 57
																		
																		f'4 b, |
																		
																			% m. 58
																		
																		
																			\time
																		
																		3/4 d4. d8 ~ d4 |
																		
																			% m. 59
																		
																		ef2 f4 |
																		
																			% m. 60
																		
																		
																			}
																		
																		>>
																		
																			}
																		
																	

Corresponding output [ edit ]

Rendered output

More complex output [ edit ]

Lilypond can also create extensively customised output. An example is the short extract of a Karlheinz Stockhausen piano piece below.

Excerpt from “Klavierstück II” by Stockhausen as a rendering example

Collaboration with other projects [ edit ]

First measures of Adeste Fideles , generated by LilyPond.

Several graphical scorewriters —such as Rosegarden , NoteEdit , Canorus, Denemo , and TuxGuitar —can export files directly to LilyPond format. Other graphical applications serve as front ends to LilyPond, including Frescobaldi and the LilyPondTool plugin for jEdit . Denemo integrates the PDF output of LilyPond in its display, allowing some editing operations on the final typeset score.

The Mutopia Project , which distributes free content sheet music, uses LilyPond to typeset its music, as does Musipedia, a collaborative music encyclopedia.

Emacs ' org-mode contains support for embedding LilyPond scores into documents. [24]

OOoLilyPond, a LibreOffice extension provides support for calling LilyPond to embed scores into documents. [25]

Integration into MediaWiki [ edit ]

Lilypond is available in MediaWiki via the Score extension code. This, for example, transforms the notation

																		
																		
																			
																				
																					sound=
																				
																				
																					"1"
																				
																				
																					>
																				
																				\relative c' { f d f a d f e d cis a cis e a g f e }
																				
																			
																		

into

\relative c' { f d f a d f e d cis a cis e a g f e }

The above excerpt is a simplified version of Solfeggio in C Minor by C.P.E. Bach . More complex scores, including lyrics, are also possible within MediaWiki wikis. See Pastime with Good Company for an example of this.

Integration into text using lilypond-book [ edit ]

Integration of lilypond musical elements into various document formats (both TeX -based systems such as LaTeX and Texinfo , and also DocBook and HTML pages) is natively supported through the companion program lilypond-book , developed and maintained by the LilyPond community. [26] This allows users to embed musical elements within texts, such as musicology, song booklets, work sheets for teaching, and school examinations.

Integration into LaTeX [ edit ]

For integration into the LaTeX document preparation system, ly LuaT e X has been developed as a LuaL a T e X package to embed musical elements within texts. It includes features for matching layout and appearance of the musical elements with the surrounding text document. [27] Music elements may consist of music symbols, song lyrics, guitar chords diagrams, lead sheets, music excerpts, guitar tablatures, or multi-page scores.

Comparison to other scorewriters [ edit ]

Finale and Sibelius are two proprietary scorewriters often compared to LilyPond. Andrew Hawryluk, a LilyPond user, wrote a series of articles comparing output quality between Finale and LilyPond. [28]

Another scorewriter with comparable features to LilyPond is SCORE , but SCORE relies on manual positioning more than Lilypond does.

See also Comparison of scorewriters .

See also [ edit ]

References [ edit ]

  1. ^ "Authors" . LilyPond Development team . Retrieved March 21, 2015 .
  2. ^ http://lilypond.org/news.html#LilyPond-2_002e22_002e2-released-February-22_002c-2022 .
  3. ^ https://lilypond.org/news.html .
  4. ^ "Source tarball" . lilypond.org . Retrieved March 4, 2016 .
  5. ^ "Downloads for LilyPond 2.18.2" . lilypond.org . Retrieved March 4, 2016 .
  6. ^ "LICENSE - lilypond.git - GNU LilyPond" . git.savannah.gnu.org .
  7. ^ "GNU LilyPond Learning Manual: Preface" . Retrieved December 23, 2017 .
  8. ^ "MusiXTeX PreProcessor README" . GitHub . Retrieved March 31, 2010 .
  9. ^ Kroger, Pedro (2004). "Re: The origin of the name lilypond" . lilypond-user mailing list . lists.gnu.org . Retrieved March 19, 2014 .
  10. ^ Nienhuys, Han-Wen (July 31, 1998). "GNU LilyPond 1.0 released" . gnu-music-discuss (Mailing list) . Retrieved February 16, 2010 .
  11. ^ Nienhuys, Han-Wen (September 24, 2003). "LilyPond 2.0 – make beautiful music prints" . info-lilypond (Mailing list) . Retrieved February 16, 2010 .
  12. ^ "LilyPond programming languages" . Retrieved March 21, 2015 .
  13. ^ "GNU LilyPond Music Typesetter – Code Analysis" . Retrieved July 25, 2017 .
  14. ^ "Overview of LilyPond architecture" . Retrieved March 21, 2015 .
  15. ^ Griewank, Andreas (January 4, 2010). "Tuning guitars and reading music in major thirds" . Matheon Preprints . Berlin, Germany: DFG research center "MATHEON, Mathematics for key technologies". 695 . Retrieved January 14, 2020 .
  16. ^ "LilyPond - Essay on automated music engraving" . Retrieved December 23, 2017 .
  17. ^ "Proportional notation" . Retrieved March 21, 2015 .
  18. ^ "LilyPond Learning Manual: 1.2.2 Working on input files" . Retrieved March 21, 2015 .
  19. ^ "LilyPond Notation Reference: 1.1.1 Writing pitches" . Retrieved March 21, 2015 .
  20. ^ "LilyPond Notation Reference: 1.3.1 Expressive marks attached to notes" . Retrieved March 21, 2015 .
  21. ^ "LilyPond Notation Reference: 1.3.2 Expressive marks as curves" . Retrieved March 21, 2015 .
  22. ^ "LilyPond Notation Reference: 1.2.4 Beams" . Retrieved March 21, 2015 .
  23. ^ "LilyPond Notation Reference: 3.3.3 Text encoding" . Retrieved March 21, 2015 .
  24. ^ "org-babel lilypond language module" . December 17, 2018 . Retrieved November 30, 2019 – via GitHub.
  25. ^ Klaus Blum (April 18, 2017). "OOoLilyPond: Creating musical snippets in LibreOffice documents" . Retrieved October 12, 2017 .
  26. ^ LilyPond community (1996–2020). "LilyPond Usage manual" .
  27. ^ Peron, Fr. Jacques; Liska, Urs; Springuel, Br. Samuel (May 27, 2019). "LyLuaTeX 1.0f" (PDF) . Comprehensive TeX Archive Network (CTAN) . Retrieved April 16, 2020 .
  28. ^ Hawryluk, Andrew. "Finale and LilyPond" . Retrieved February 15, 2010 .

External links [ edit ]