From: Han-Wen Nienhuys Date: Mon, 25 Jan 1999 12:09:15 +0000 (+0100) Subject: release: 1.1.24 X-Git-Tag: release/1.1.24 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=75be12aa75a535af753d6125bfc03da3ee303b36;p=lilypond.git release: 1.1.24 --- diff --git a/Documentation/man/lilypond.yo b/Documentation/man/lilypond.yo index 0268efdc9f..ddfdf4ad54 100644 --- a/Documentation/man/lilypond.yo +++ b/Documentation/man/lilypond.yo @@ -147,7 +147,7 @@ dit(GNU url(LilyPond)(http://www.cs.uu.nl/people/hanwen/lilypond/index.html)) GNU LilyPond is updated very frequently, the latest version is always available at: -lurl(ftp://pcnov095.win.tue.nl/pub/lilypond). This FTP site is mirrored +lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond). This FTP site is mirrored at a number of sites; consult the project web pages for information about mirrors. diff --git a/Documentation/man/out/lilypond.1 b/Documentation/man/out/lilypond.1 index 9c844fb6b0..f4e11ebc02 100644 --- a/Documentation/man/out/lilypond.1 +++ b/Documentation/man/out/lilypond.1 @@ -141,7 +141,7 @@ some standard music files\&. It also has the complete LilyPond documentation .PP GNU LilyPond is updated very frequently, the latest version is always available at: -ftp://pcnov095\&.win\&.tue\&.nl/pub/lilypond\&. This FTP site is mirrored +ftp://ftp\&.cs\&.uu\&.nl/pub/GNU/LilyPond\&. This FTP site is mirrored at a number of sites; consult the project web pages for information about mirrors\&. .PP diff --git a/Documentation/tex/feta20.sty b/Documentation/tex/feta20.sty new file mode 100644 index 0000000000..0dbfcf90cc --- /dev/null +++ b/Documentation/tex/feta20.sty @@ -0,0 +1,146 @@ +% Creator: mf-to-table.py version 0.7 +% Automatically generated on +% Do not edit +% input from out/feta20.log +% name +% rests +\fetdef\wholerest{0} +\fetdef\halfrest{1} +\fetdef\outsidewholerest{2} +\fetdef\outsidehalfrest{3} +\fetdef\breverest{4} +\fetdef\longarest{5} +\fetdef\multirest{6} +\fetdef\quartrest{7} +\fetdef\eighthrest{8} +\fetdef\sixteenthrest{9} +\fetdef\thirtysecondrest{10} +\fetdef\sixtyfourthrest{11} +\fetdef\hundredtwentyeighthrest{12} + +% accidentals +\fetdef\sharp{13} +\fetdef\natural{14} +\fetdef\flat{15} +\fetdef\flatflat{16} +\fetdef\sharpsharp{17} +\fetdef\rightparen{18} +\fetdef\leftparen{19} + +% dots +\fetdef\dot{20} +\fetdef\repeatcolon{21} + +% balls +\fetdef\brevisball{22} +\fetdef\brevisledger{23} +\fetdef\longaball{24} +\fetdef\longaledger{25} +\fetdef\wholeball{26} +\fetdef\wholeledger{27} +\fetdef\halfball{28} +\fetdef\halfledger{29} +\fetdef\quartball{30} +\fetdef\quartledger{31} + +% scripts +\fetdef\ufermata{32} +\fetdef\dfermata{33} +\fetdef\thumb{34} +\fetdef\sforzatoaccent{35} +\fetdef\staccato{36} +\fetdef\ustaccatissimo{37} +\fetdef\dstaccatissimo{38} +\fetdef\tenuto{39} +\fetdef\umarcato{40} +\fetdef\dmarcato{41} +\fetdef\ouvert{42} +\fetdef\plusstop{43} +\fetdef\upbow{44} +\fetdef\downbow{45} +\fetdef\reverseturn{46} +\fetdef\turn{47} +\fetdef\trill{48} +\fetdef\upedalheel{49} +\fetdef\dpedalheel{50} +\fetdef\upedaltoe{51} +\fetdef\dpedaltoe{52} +\fetdef\flageolet{53} +\fetdef\trilelement{54} +\fetdef\prall{55} +\fetdef\mordent{56} +\fetdef\prallprall{57} +\fetdef\prallmordent{58} +\fetdef\upprall{59} +\fetdef\downprall{60} +\fetdef\accDiscant{61} +\fetdef\accDiscantF{62} +\fetdef\accDiscantEh{63} +\fetdef\accDiscantE{64} +\fetdef\accDiscantFE{65} +\fetdef\accDiscantFEh{66} +\fetdef\accDiscantEE{67} +\fetdef\accDiscantFEE{68} +\fetdef\accDiscantEEE{69} +\fetdef\accDiscantFEEE{70} +\fetdef\accDiscantS{71} +\fetdef\accDiscantFS{72} +\fetdef\accDiscantES{73} +\fetdef\accDiscantEhS{74} +\fetdef\accDiscantFES{75} +\fetdef\accDiscantFEhS{76} +\fetdef\accDiscantEES{77} +\fetdef\accDiscantFEES{78} +\fetdef\accDiscantEEES{79} +\fetdef\accDiscantFEEES{80} +\fetdef\accDiscantSS{81} +\fetdef\accDiscantESS{82} +\fetdef\accDiscantEESS{83} +\fetdef\accDiscantEEESS{84} +\fetdef\accFreebass{85} +\fetdef\accFreebassF{86} +\fetdef\accFreebassE{87} +\fetdef\accFreebassFE{88} +\fetdef\accStdbass{89} +\fetdef\accStdbassM{90} +\fetdef\accStdbassBp{91} +\fetdef\accStdbassT{92} +\fetdef\accStdbassTp{93} +\fetdef\accBayanbass{94} +\fetdef\accBayanbassT{95} +\fetdef\accBayanbassE{96} +\fetdef\accBayanbassTE{97} +\fetdef\accBayanbassEE{98} +\fetdef\accBayanbassTEE{99} +\fetdef\accSB{100} +\fetdef\accBB{101} +\fetdef\accOldEE{102} +\fetdef\accOldEES{103} + +% flags +\fetdef\eighthflag{104} +\fetdef\sixteenthflag{105} +\fetdef\thirtysecondflag{106} +\fetdef\sixtyfourthflag{107} +\fetdef\deighthflag{108} +\fetdef\dsixteenthflag{109} +\fetdef\dthirtysecondflag{110} +\fetdef\dsixtyfourthflag{111} + +% clefs +\fetdef\altoclef{112} +\fetdef\caltoclef{113} +\fetdef\bassclef{114} +\fetdef\cbassclef{115} +\fetdef\trebleclef{116} +\fetdef\ctrebleclef{117} + +% timesig +\fetdef\fourfourmeter{118} +\fetdef\allabreve{119} +\fetdef\oldfourfourmeter{120} +\fetdef\oldallabreve{121} +\fetdef\oldthreetwometer{122} +\fetdef\oldsixfourmeter{123} +\fetdef\oldninefourmeter{124} + diff --git a/Documentation/tex/html-disclaimer.yo-urg b/Documentation/tex/html-disclaimer.yo-urg index 2fa20c33aa..061f9d441e 100644 --- a/Documentation/tex/html-disclaimer.yo-urg +++ b/Documentation/tex/html-disclaimer.yo-urg @@ -1,15 +1,16 @@ COMMENT( I cannot be named .yo, because i'm not a complete document, yodl2x will break. ) + whenhtml( + nsubsect(Disclaimer) -This document is written in url(Yodl)(ftp://pcnov095.win.tue.nl/pub/yodl) -and should foremost produce nice LaTeX() output. -In other formats, such as html, some things will look a bit different, -while other things will be simply left out. -Therefore, the authoritive version of this document is the PostScript version, -produced via LaTeX(). -As you know, url(no gifs due to patent problems)(http://www.gnu.org/philosophy/gif.html), -but the png images should be viewable with any current browser -(jpeg is inappropriate for music images). -) + +This document is written in url(Yodl)(ftp://ftp.lilypond.org/pub/yodl) +and should foremost produce nice LaTeX() output. In other formats, +such as html, some things will look a bit different, while other +things will be simply left out. Therefore, the authoritive version of +this document is the PostScript version, produced via LaTeX(). As you +know, url(no gifs due to patent +problems)(http://www.gnu.org/philosophy/gif.html), but the PNG images +should be viewable with any current browser . ) diff --git a/Documentation/tex/lilypond-overview.doc b/Documentation/tex/lilypond-overview.doc index f5eea5a448..0ab7fdfe17 100644 --- a/Documentation/tex/lilypond-overview.doc +++ b/Documentation/tex/lilypond-overview.doc @@ -297,6 +297,11 @@ articulation. This stress pattern is called \emph{meter}. \subsection{Music notation} +Music notation is a system that tries to represent musical ideas +through printed symbols. Music notation has no precise definition, +but most conventions have described in reference manuals on music +notation\cite{read-notation}. + In music notation, sounds and silences are represented by symbols that are called note and rest respectively.\footnote{These names serve a double purpose: the same terms are used to denote the musical @@ -343,18 +348,176 @@ linewidth = -1.; \label{fig:noteshapes} \end{center} \end{figure} - Notes are printed in a grid of horizontal lines called \emph{staff} to -denote their pitch: each line represents the pitch of from the +denote their pitch: each line represents the pitch of from the +standard scale (c, d, e, f, g, a, b). The reference point is the +\emph{clef}, eg., the treble clef marks the location of the $g^1$ +pitch. The notes are printed in their time order, from left to right. + + +\begin{figure}[h] + \begin{center} + \begin{mudela} + \score { \notes { + a4 b c d e f g a \clef bass; + a4 b c d e f g a \clef alto; + a4 b c d e f g a \clef treble; + } + \paper { linewidth = 15.\cm; } + } + \end{mudela} + \caption{Pitches ranging from $a, b, c',\ldots a'$, in different + clefs. From left right the bass, alto and treble clef are + featured.} + \label{fig:pitches} + \end{center} +\end{figure} + +The chromatic alterations are indicated by printing a flat sign or a +sharp sign in front of the note head. If these chromatic alterations +occur systematically (if they are part of the tonality of the piece), +then this indicated with a \emph{key signature}. This is a list of +sharp/flat signs which is printed next to the clef. + +Articulation is notated by marking the note shapes wedges, hats and +dots all indicate specific articulations. If the notes are to be +bound fluently (legato), the note shapes are encompassed by a smooth +curve called \emph{slur}, + +\begin{figure}[h] + \begin{center} + \begin{mudela} + c'4-> c'4-. g'4 ( b'4 ) g''4 + \end{mudela} + \caption{Some articulations. From left to right: extra stress + (\emph{marcato}), short (staccato), slurred notes (legato).} + \label{fig:articulation} + \end{center} +\end{figure} + + + +Dynamics are notated in two ways: absolute dynamics are indicated by +letters: \textbf{f} (from Italian ``forte'') stands for loud, +\textbf{p} (from Italian ``piano'') means soft. Gradual changes in +loudness are notated by (de)crescendos. These are hairpin like shapes +below the staff. + +\begin{figure}[h] + \begin{center} + \begin{mudela} + g'4\pp \< g'4 \! g'4 \ff \> g'4 g' \! g'\ppp + \end{mudela} + \caption{Dynamics: start very soft (pp), grow to loud (ff) and + decrease to extremely soft (ppp)} + \label{fig:dynamics} + \end{center} +\end{figure} -\subsection{Music typography} +The meter is indicated by barlines: every start of the stress pattern +is preceded by a vertical line, the \emph{bar line}. The space +between two bar lines is called measure. It is therefore the unit of +the rhythmic pattern. +The time signature also indicates what kind of rhythmic pattern is +desired. The time signature takes the form of two numbers stacked +vertically. The top number is the number of beats in one measure, the +bottom number is the duration (relative to the whole note) of the note +that takes one beat. Example: 2/4 time signature means ``two beats +per measure, and a quarter note takes one beat'' +Chords are written by attaching multiple note heads to one stem. When +the composer wants to emphasize the horizontal relationships between +notes, the simultaneous notes can be written as voices (where every +note head has its own stem). A small example is given in +Figure~\ref{fig:simultaneous}. +\begin{figure}[h] + \begin{center} + \begin{mudela} + \relative c'' {\time 2/4; + \type Staff < \type Voice = VA{ + \stemdown + c4 d + b16 b b b b b b b } + \type Voice = VB { + \stemup e4 f g8 g4 g8 } > + } + \end{mudela} + \caption{Notes sounding together. Chord notation (left, before + the bar line) emphasizes vertical relations, voice notation + emphasizes horizontal relations. Separate voices needn't have + synchronous rhythms (third measure). + } + \label{fig:simultaneous} + \end{center} +\end{figure} + +Separate voices do not have to share one rhythmic pattern---this is +also demonstrated in Figure~\ref{fig:simultaneous}--- they are in a sense%vaag +independent. A different way to express this in notation, is by +printing each voice on a different staff. This is customary when +writing for piano (both left and right hand have a staff of their own) +and for ensemble (every instrument has a staff of its own). + + + +\subsection{Music typography} + +Music typography is the art of placing symbols in esthetically +pleasing configuration. Little is explicitly known about music +typography. There are only a few reference works +available\cite{ross,wanske}. Most of the knowledge of this art has +been transmitted verbally, and was subsequently lost. + +The motivation behind choices in typography is to represent the idea +as clearly as possible. Among others, this results in the following +guidelines: +\begin{itemize} +\item The printed score should use visual hints to accentuate the + musical content +\item The printed score should not contain distracting elements, such + as large empty regions or blotted regions. +\end{itemize} + +An example of the first guideline in action is the horizontal spacing. +The amount of space following a note should reflect the duration of +that note: short notes get a small amount of space, long notes larger +amounts. Such spacing constraints can be quite subtle, for the +``amount of space'' is only the impression that should be conveyed; there +has to be some correction for optical illusions. See +Figure~\ref{fig:spacing}. +\begin{figure}[h] + \begin{center} + \begin{mudela} + \relative c'' { \time 3/4; c16 c c c c8 c8 | f4 f, f' } + \end{mudela} + \caption{Spacing conveys information about duration. Sixteenth + notes at the left get less space than quarter notes in the + middle. Spacing is ``visual'', there should be more space + after the first note of the last measure, and less after second. } + \label{fig:spacing} + \end{center} +\end{figure} +Another clearly visible example of music typography is visible in +collisions. When chords or separate voices are printed, the notes +that start at the same time should be printed aligned (ie., with the +same $x$ position). If the pitches are close to each other, the note +heads would collide. To prevent this, some notes (or note heads) have +to be shifted horizontally. An example of this is given in Figure~\ref{fig:collision}. +\begin{figure}[h] + \begin{center} + \begin{mudela} + + \end{mudela} + \caption{Collisions} + \label{fig:collision} + \end{center} +\end{figure} \bibliographystyle{hw-plain} \bibliography{engraving,boeken,colorado,computer-notation,other-packages} diff --git a/Documentation/tex/musicnotes.sty b/Documentation/tex/musicnotes.sty index 424c10c8a2..bc4a69f543 100644 --- a/Documentation/tex/musicnotes.sty +++ b/Documentation/tex/musicnotes.sty @@ -4,7 +4,7 @@ \def\fetdef#1#2{% \def#1{\hbox{\char#2}}} -\input feta20 +\input feta20.sty \font\fetasixteenfont=feta16 \font\fetaelevenfont=feta11 diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo index 61d658e862..6845476a00 100644 --- a/Documentation/tex/refman.yo +++ b/Documentation/tex/refman.yo @@ -165,7 +165,7 @@ keywords: code(\mm), code(\pt), code(\in), or code(\cm). Dimensions are converted immediately to a real which gives the dimension in points, so they can be mixed with reals, but the result is no longer of type dimension. The keywords that require a dimension -(code(\shape) and code(\symboltables)) will not accept this. +(code(\shape)). dit(pitch) A pitch is a string which is the name of a pitch. Example: code(a). @@ -224,8 +224,8 @@ will only be able to refer to identifiers whose names begin with a letter and are entirely alphanumeric. It is also impossible to refer to an identifier whose name is the same as the name of a keyword. The following words are keywords: -verb(absdynamic grouping mm relative symboltables -accepts header musicalpitch remove table +verb(absdynamic grouping mm relative +accepts header musicalpitch remove alternative in name repeat tempo bar include notenames scm time cadenza key notes scmfile times @@ -553,10 +553,8 @@ mudela()( Dynamic marks are specified by using an identifier after a note without a dash: code(c4 \ff). Note that this syntax is inconsistent with the syntax for other types of ornaments. The available dynamic -marks are: code(\pppppp), code(\ppppp), code (\pppp), code(\ppp), code(\pp), -code(\p), code(\mp), code(\mf), code(\f), code(\ff), code(\fff), -code(\ffff), code(\fffff), code(\ffffff), -code(\fp), code(sf), code(\sff), code(\sp), code(\spp), (\sfz) and code (\rfz). +marks are: code(\ppp), code(\pp), code(\p), code(\mp), code(\mf), +code(\f), code(\ff), code(\fff), code(\fp), code(sf), and code(\sfz). A crescendo mark is started with code(\cr) and terminated with code(\rc). A decrescendo mark is started with code(\decr) and @@ -931,7 +929,7 @@ note, etc. The number of dots after the note is given by var(dotcount). dit(code(\font) var(string)) Internal keyword. Used within -code(\symboltables) to specify the font. +code(\paper) to specify the font. dit(code(\grouping) var(durationseq)code(;)) Sets the metric structure of the measure. Each argument specifies the duration of one metric unit. @@ -1096,13 +1094,6 @@ second parameter is set to 1 to start the mark and 2 to stop it. Users should use the abbreviations which are defined in the initialization file file(dynamic.ly). -dit(code(\symboltables)) Internal keyword. Used to create symbol -tables. See initialization files file(paper*.ly), file(feta*.ly), and -file(table*.ly). - -dit(code(\table)) Internal keyword. Used within code(\symboltables) -to specify the tables. See initialization files. - dit(code(\tempo) var(duration) = var(perminute)code(;)) Used within code(\midi) or within music to specify the tempo. For example, `code(\midi { \tempo 4 = 76;})' requests output with 76 quarter notes @@ -1459,9 +1450,6 @@ equal to -1. dit(code(\f)) Print forte symbol on the preceeding note. dit(code(\ff)) Print fortissimo symbol on the preceeding note. dit(code(\fff)) Print fortississimo symbol on preceeding note. -dit(code(\ffff)) Print fortissississimo symbol on preceeding note. -dit(code(\fffff)) Print fffff symbol on preceeding note. -dit(code(\ffffff)) Print ffffff symbol on preceeding note. dit(code(\fp)) Print fortepiano symbol on preceeding note. dit(code(\free)) Used for setting direction setting properties. Is equal to 0. @@ -1487,16 +1475,11 @@ has the same key signature. This sets the Staff.keyoctaviation property. dit(code(\p)) Print a piano symbol on preceeding note. dit(code(\pp)) Print pianissimo symbol on preceeding note. dit(code(\ppp)) Print pianississimo symbol on preceeding note. -dit(code(\pppp)) Print pianissississimo symbol on preceeding note. -dit(code(\ppppp)) Print ppppp symbol on preceeding note. -dir(code(\pppppp)) Print pppppp symbol on preceeding note. dit(code(\rc)) Terminate a crescendo. dit(code(\rced)) Terminate a decrescendo -dit(code(\rfz)) Print a rinforzato symbol on preceeding note. dit(code(\right)) Used for setting textalignment property. Is set to 1. -dit(code(\sf)) Print a subito-forte symbol on preceeding note. -dit(code(\sff)) Print a subito-fortissimo symbol on preceeding note. -dit(code(\sfz)) Print a sforzato symbol on preceeding note. +dit(code(\sf)) Print a ?? symbol on preceeding note. +dit(code(\sfz)) Print a ?? symbol on preceeding note. dit(code(\shiftoff)) Disable horizontal shifting of note heads that collide. Sets the Voice.hshift property. dit(code(\shifton)) Enable note heads that collide with other note heads @@ -1507,8 +1490,6 @@ dit(code(\slurdown)) Force slurs to be below notes. This sets the Voice.slurydirection property. dit(code(\slurup)) Force slurs to be above notes. This sets the Voice.slurydirection property. -dit(code(\sp)) Print a subito-piano symbol on preceeding note. -dit(code(\spp)) Print a subito-forte symbol on preceeding note. dit(code(\specialkey)) Allow keys signatures do differ in different octaves. This sets the Staff.keyoctaviation property. dit(code(\stemboth)) Allow stems, beams, and slurs to point either @@ -1585,7 +1566,7 @@ inside a code(\paper) block. description( dit(var(integer)) If an integer appears on the left side of an -assignment then a code(\symboltables) keyword must appear on the right +assignment then a code(\font) keyword must appear on the right side. This defines a music font at a particular size. See Voice property code(\fontsize). diff --git a/Documentation/tex/refman.yo.orig b/Documentation/tex/refman.yo.orig deleted file mode 100644 index f0a3d4d250..0000000000 --- a/Documentation/tex/refman.yo.orig +++ /dev/null @@ -1,1875 +0,0 @@ -COMMENT(-*-text-*-) - -redef(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\ - whenhtml(sc(ARG1))) - - -redef(code)(1)(tt(ARG1)) - -COMMENT( - -TODO: - the use of semicolons needs to be documented once it settles down - \times needs documentation with examples somewhere once it works (?) - paper size? - the explanation of how lyrics mode parses words seems ridiculous. - Is there a simple way to explain this, or is the behavior - too complicated for a reasonable explanation? - \relative and \tranpose and \times make it necessary to specify - an explicit \type staff, or bizarre things happen. - catalan.ly - accordion symbols - extender* (see extender.ly) - \repeat & \alternative -> probably should have an example -) - - -COMMENT( This document contains Mudela fragments. You need at least -Yodl-1.30.18 to convert this to tex or html. - -TODO - -in stead <-> instead -) - -htmlbodyopt(bgcolor)(white) -htmlcommand() - -latexlayoutcmds( -\setlength{\topmargin}{-0.25in} -\setlength{\textheight}{9in} -\setlength{\textwidth}{5.875in} -\setlength{\oddsidemargin}{0.25in} -\setlength{\evensidemargin}{0.25in} -\input mudela-book -) - -whentexinfo(notableofcontents()) - -article(Mudela 1.0.7 / LilyPond 1.1.8 Reference Manual) - (Adrian Mariano, Han-Wen Nienhuys and Jan Nieuwenhuizen) - (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop()) - -COMMENT( - -* The [ ] look weird - -* paragraphs have too much space. - -) - - -latexcommand(\def\interexample{}) -latexcommand(\def\preexample{\par}) -latexcommand(\def\postexample{\par\medskip}) -latexcommand(\def\file#1{{code(#1)}}) -COMMENT( -latexcommand(\def\texttt#1{\tt #1}) -latexcommand(\def\textbf#1{\bf #1}) -) - -COMMENT(urg, texinfo include breaks) -whenhtml( -includefile(html-disclaimer.yo-urg) -) - -bf(This document is not up to date). All rendered examples of course -are current, but the rest probably isn't. Adjusting the tutorial was -considered more important than writing the reference manual. We -apologize for the inconvenience. For a complete and up-to-date -definition, see file(lily/parser.yy), file(lily/lexer.ll), and the -init files. - -This document describes the the GNU LilyPond input format, which is an -effective language for defining music. We call this language (rather -arrogantly) The Musical Definition Language or Mudela, for -short.footnote(If anybody comes up with a better name, we'd gladly - take this. Gourlay already uses Musical Description Language, - G-Sharp Score Definition Language. ISO standard 10743 defines a - Standard Music Description Language. We're not being original here.) - -The first aim of Mudela is to define a piece of music, being complete -from both from a musical typesetting, as from a musical performing -point of view. - -The Musical Definition Language (Mudela), has a logical structure, -making use of identifiers, that allows for flexible input, and -definition reuse. See the documentation file file(MANIFESTO), included -with the LilyPond sources for reasons and design considerations. - - -sect(Running LilyPond) - -When invoked with a filename that has no extension, LilyPond will try adding -a file(.fly) extension first, and a file(.ly) extension second. -If the filename ends with -file(.fly), LilyPond processes the file as music using -file(init.fly). In this case, LilyPond does something -like: -verb(\score { - \notes\relative c { - \input "yourfile.fly" - } - \paper{} - \midi{} -}) -If you invoke LilyPond with a file file(foo.)var(ext) that doesn't -have the file(.ly) extension then LilyPond will look for a file called -file(init.)var(ext) and process this file. The file -file(init.)var(ext) must contain the code(\maininput) keyword or LilyPond -will not read the user specified file. - -When LilyPond processes file(filename.ly) it will produce file(filename.tex) as -output. If file(filename.ly) contains a second code(\paper) keyword, then -LilyPond will produce file(filename-1.tex) as well. Subsequent code(\paper) -keywords will produces sequentially numbered file names. Several files can be -specified; they will each be processed independently. - -sect(Syntax) - -subsect(Basic Mudela) - -A Mudela file consists of keywords with arguments and identifier -assignments separated by spaces, tabs or newlines. Semicolons are -used by some keywords but are not generally required. A one line -comment is introduced by a code(%) character. Block comments are -started by code(%{) and ended by code(%}). They cannot be nested. - -Mudela supports several types: - -description( - -dit(integer) -Formed from an optional minus sign followed by digits. Arithmetic -operations cannot be done with integers, and integers cannot be mixed -with reals. - -dit(real) -Formed from an optional minus sign and a sequence of digits followed -by a emph(required) decimal point and an optional exponent such as -code(-1.2e3). Reals can be built up using the usual operations: -code(+), code(-), code(*), and code(/), with parentheses for grouping. - -dit(string) -Begins and ends with the code(") character. To include a code(") -character in a string write code(\"). Various other backslash -sequences have special interpretations as in the C language. A string -that contains no spaces can be written without the quotes. See -Section ref(modes) for details on unquoted strings; their -interpretation varies depending on the situation. On the right side -of identifier assignments and within the code(\header) keyword, -strings can be concatenated using the code(+) character. - -dit(dimension) Consists of a real followed by one of the dimension -keywords: code(\mm), code(\pt), code(\in), or code(\cm). Dimensions -are converted immediately to a real which gives the dimension in -points, so they can be mixed with reals, but the result is no longer -of type dimension. The keywords that require a dimension -(code(\shape) and code(\symboltables)) will not accept this. - -dit(pitch) -A pitch is a string which is the name of a pitch. Example: code(a). -The pitch names can be redefined with the code(\notenames) keyword. -See Section(notelang) for pitch names in different languages. Pitches -can only be specified inside note mode which is specified with -code(\notes). Therefore, keywords which require pitch arguments must -appear inside code(\notes). - -dit(music) -Music is a compound type: arbitrarily complicated expressions with a -hierarchical structure can be formed from simple building blocks. The -simplest expression of type music is a single note. A note is formed -from a pitch and an optional duration and must be specified within -code(\notes). See Section ref(notedesc) for details. More -complicated expressions of type music are formed by surrounding a -sequence of expressions of type music with braces code({) and code(}) -or with angle brackets code(<) and code(>). Items appearing in braces -will be treated as serial. Items in angle brackets will be -simultaneous. So for example code({ c e g }) represents an arpeggio -and code(< c e g >) represents a chord. These items can be nested any -way you like. This simple example shows how three chords can be -expressed in two different ways: -mudela(fragment,verbatim,center)( -\notes<{a b c'}{c' d' e'}{e' f' g'}> -\notes{} -) - -) - - -COMMENT( -Compound types are built up from the simple types. The compound types -are: arglist, assignlist and musiclist. An arglist is a -white space separated list of integers, reals and or strings surrounded -by braces code({) and code(}). An assignlist is a list of -identifier assignments, which have the form var(key)code(=)var(value). -A statement in Mudela has one of three forms: -verb(\keyword argument -\keyword argument1 argument2 ... ; -string=value) -) - -subsect(Identifiers) - -Identifiers allow names to be assigned to constants, music, or other -Mudela structures. To assign an identifier you use -var(name)=var(value) and to refer to an identifier, you preceed its -name with a backslash: code(\)var(name). It is legal to redefine an -identifier in terms of its old value: code(foo = \foo * 2.0). -Identifier assignments must appear at the top level in the Mudela -file. - -An identifier can be created with any string for its name, but you -will only be able to refer to identifiers whose names begin with a -letter and are entirely alphanumeric. It is also impossible to refer -to an identifier whose name is the same as the name of a keyword. The -following words are keywords: -verb(absdynamic grouping mm relative symboltables -accepts header musicalpitch remove table -alternative in name repeat tempo -bar include notenames scm time -cadenza key notes scmfile times -clef keysignature paper score translator -cm lyrics partial script transpose -consists maininput penalty shape type -duration mark property skip version -font midi pt spandynamic) - -The right hand side of an identifier assignment is parsed completely -when the assignment is made. It therefore must have any context -specified in the definition. For example, you must write -code(foo=\notes{a8 b c}) rather than code(foo={a8 b c}). Even though -the context is specified in the definition, you must refer to the -identifier inside the correct context: -verb(foo = \paper{ linewidth = 6.0\in; } -\score{ - \notes{ ... } - \paper{ \foo } -}) -If code(\foo) is used here without the surrounding code(\paper) then -an error will result. Note however that the following is acceptible -verb(foo = \notes { ... } -\score{ \foo }) -It is not necessary to specify code(\notes). - -Identifiers can be set equal to integers, reals, strings, music, -durations (specified with code(\duration)), note ornaments (specified -with code(\script), dynamics commands, or code(:)), note name tables -(specified with code(\notenames), translator definitions, the -code(\paper) block, the code(\midi) block or the code(\score) block. -When identifiers are used for translators, the code(\paper), -code(\midi), and code(\score) blocks, they may only be referred to as -the first item in a block. So code(\paper{\one \two}) is illegal -because the identifier code(\two) is not the first thing in the block. -Unlike other identifier definitions, translator identifier definitions -can only appear within code(\midi) or code(\paper) blocks. See -Section ref(translators) for more information. - - -COMMENT( -subsect(Hierarchical structures) - -The general structure consists of declarations: -verb(IDENTIFIER = \TYPE{ - -}) -and instantiations: - -verb(\TYPE{ }) - -(Currently, code(\score) is the only type that can be instantiated -at top level.) - -Most instantiations that use an IDENTIFIER are specified as follows: - -verb(\TYPE{ \IDENTIFIER [...] }) - -Some exceptions on this rule have been made to prevent inputting -Mudela becoming tedious -) - - -subsect(Modes) -label(modes) - -To simplify different aspects of music definition (entering the notes -and manipulating them) Mudela has three different input modes which -affect how unquoted strings are interpreted. -In each mode, words are identified on the input. If code("word") is -encountered, it is treated as a string. If code(\word) is -encountered it is treated as a keyword or as an identifier. The -behavior of the modes differs in two ways: different modes treat -unquoted words different, and different modes have different rules for -deciding what is a word. - -description( - -dit(Normal mode) -At the start of parsing, Mudela is in normal mode. -In normal mode, a word is an alphabetic character followed by -alphanumeric characters. If code(word) is encountered on the input it -is treated as a string. - -dit(Note mode) Note mode is introduced by the keyword -code(\notes). In Note mode, words can only contain alphabetic -characters. If code(word) is encountered, LilyPond first checks for a -notename of code(word). If no notename is found, then code(word) is -treated as a string. If you mistype a notename, the parser will most -likely complain that you should be in code(\lyrics) mode to do lyrics. - -dit(Lyric mode) Lyrics mode is introduced by the keyword -code(\lyrics). This mode is has rules that make it easy to include -punctuation and diacritical marks in words. A word in Lyrics mode -begins with: an alphabetic character, code(_), -code(?), code(!), code(:), code('), -the control characters code(^A) through code(^F), code(^Q) through -code(^W), code(^Y), code(^^), any 8-bit character with ASCII code over -127, or a two character combination of a backslash followed by one -of code(`), code('), code(") or code(^). -Subsequent characters of a word can be any character that is not a -digit and not white space. One important consequence of this is that -a word can end with code(}), which may be confusing if you thought the -code(}) was going to terminate lyrics mode. Any code(_) characters -which appear in an unquoted word are converted to spaces, providing a -mechanism for introducing spaces into words without using quotes. -Quoted words can also be used in lyrics mode to specify words that -cannot be specified with the above rules. Here are some examples. -Not all of these words are printable by TeX(). -verb(a&@&@&TSI|{[ % a word -\'afoo} % a word -1THtrhortho % not a word because it starts with a digit -``Hello'' % not a word because it starts with ` -Leise DOEXPAND(Fl\)DOEXPAND("u\)ss{}teren meine Sapfe % 4 words -_ _ _ _ % 4 words, each one a space -)) - -It is possible to create words that break the rules by prefixing them with the -dollar sign code($). Regardless of the context, a word beginning with code($) -extends until the next white space character. Such words can contain numbers -(even in Note mode), or other forbidden characters. The dollar sign can be -used to create and access identifiers that could not otherwise be used. - -COMMENT( -These modes are of a lexical nature. Normal and Note mode largely -resemble each other, save the possibility of entering Reals, -meaning of code(_) and the resolution of words - -What's this about reals? When can you enter them or not enter them?) - - -sect(Note Description) -label(notedesc) - -subsect(Basic Note Specification) - -A note specification has the form -var(pitch)[var(octavespec)][code(!)][code(?)][var(duration)]. -The pitch of the note is specified by the note's name. - -LilyPond has predefined note names for various languages. The default -names are the Dutch note names. The notes are specified by the -letters code(c) through code(b), where code(c) is an octave below -middle C and the letters span the ocatave above that C. -In Dutch, a sharp is formed by adding -code(-is) to the end of a pitch name. A flat is formed by adding code(-es). -Double sharps and double flats are obtained by adding code(-isis) or -code(-eses). -Lily has predefined sets of notenames -for various nop(languages). See Section ref(notelang) for details. -Rests are specified with the note name code(r) or code(R). -There is also a note name code(s) which produces a nonprinting note of the -specified duration. - -The optional octave specification takes the form of a series of single -quote -code(') characters or a series of comma code(,) characters. Each -code(') raises the pitch by one octave; each code(,) lowers the pitch -by an octave. - -mudela(fragment,verbatim,center)( -c' d' e' f' g' a' b' c'' -) - -mudela(fragment,verbatim,center)( -cis' dis' eis' fis' gis' ais' bis' -) - -mudela(fragment,verbatim,center)( -ces' des' es' fes' ges' as' bes' -) - -mudela(fragment,verbatim,center)( -cisis' eisis' gisis' aisis' beses' -) - -mudela(fragment,verbatim,center)( -ceses' eses' geses' ases' beses' -) - -Whenever a C-sharp is desired, you must specify a C-sharp. LilyPond -will determine what accidentals to typeset depending on the key and -context. -A reminder accidental can be forced by -using the optional exclamation mark `code(!)' -on the pitch. -A cautionary accidental, i.e., an accidental within paranthesis -can be obtained using the optional question mark `code(?)' on the pitch. -mudela(fragment,verbatim,center)( -cis' d' e' cis' c'? d' e' c'! -) - - -Durations are entered as their reciprocal values -mudela(fragment,verbatim,center)( -a'1 a'2 a'4 a a'8 a a'16 a'32 a'64 -) -mudela(fragment,verbatim,center)( -r1 r2 r4 r8 r16 r32 -) - -If the duration is omitted then it is set equal to the previous -duration. If there is no previous duration, then a quarter note is -assumed. -The duration can be followed by a dot code(.) to obtain dotted note -lengths. -mudela(fragment,verbatim,center)( -a'4. b'4. -) - -In addition, the duration can be followed by a multiplier which is -introduced with the asterisk code(*) and can be an integer or a -fraction. The multiplier changes the duration that LilyPond uses -internally for the note, but for notes it -does not change the symbol that is printed. -mudela(fragment,verbatim,center)( -c'4*2 c'4*2 d'8*2/3 d'8*2/3 -) -For long rests with durations equal to an integer number of whole notes, -LilyPond produces output that indicates the duration of the rest. If you use -code(r) then one rest symbol will be printed and several measures left blank. -If you use code(R) then all of the measure will be filled with whole rests. -If you set the code(Score.SkipBars) property, then only one measure will be -printed; with code(R), a number indicating the length of the rest will be -displayed. -mudela(fragment,verbatim,center)( -r1*3 R1*3 -\property Score.SkipBars=1 -r1*3 R1*3) - -Extra long notes can be obtained using the code(\breve) and -code(longa) durations: -mudela(fragment,verbatim,center)( -c'\breve gis'\longa -) - - -subsect(Note Spanners: Beams, Tuplets, Slurs and Ties) - -A beam is specified by surrounding the beamed notes with brackets -code([) and code(]). -mudela(fragment,verbatim,center)( -[a'8 a'] [a'16 a' a' a'] -) - -[EXPLAIN TUPLETS HERE] - -Another type of spanner is the slur. Slurs connects chords and try to -avoid crossing stems. A slur is started with code(CHAR(40)) and stopped with -code(CHAR(41)). The starting code(CHAR(40)) appears to the right of the first note -in the slur. The terminal code(CHAR(41)) apppears to the left of the first -note in the slur. This makes it possible to put a note in slurs from -both sides: -mudela(fragment,verbatim,center)( -f'()g'()a' [a'8 b'(] a'4 g' )f' -) - -A tie connects two adjacent note heads. When used with chords, it -connects all of the note heads. Ties are indicated using the tilde symbol -code(~) by analogy with TeX()'s tie which connects words. - -mudela(fragment,verbatim,center)( -e' ~ e' ~ -) - - -subsect(Note Ornaments) - -A variety of symbols can appear above and below notes to indicate -different characteristics of the performance. -These symbols can be -added to a note with `var(note)code(-\)var(name)'. Numerous different -symbols are defined in file(script.ly). Each symbol is defined using -the code(\script) keyword which specifies where symbols appear. -Symbols can be forced to appear above the note by writing -`var(note)code(^\)var(name)', and they can be forced to appear below -by writing `var(note)code(_\)var(name)'. Here is a chart showing -symbols above notes, with the name of the corresponding symbol -appearing underneath. - -mudela()( -\score{ - < \notes{ c''-\accent c''-\marcato c''-\staccatissimo f'-\fermata - c''-\stopped c''-\staccato c''-\tenuto c''-\upbow c''-\downbow - c''-\lheel c''-\rheel c''-\ltoe c''-\rtoe c''-\turn - c''-\open c''-\flageolet c''-\reverseturn - c''-\trill - c''-\prall c''-\mordent c''-\prallprall c''-\prallmordent - c''-\upprall c''-\downprall c''-\thumb} - \type Lyrics \lyrics{ - accent marcato staccatissimo fermata stopped - staccato tenuto upbow downbow lheel rheel ltoe rtoe turn - open flageolet reverseturn - trill prall - mordent prallprall prallmordent uprall downprall thumb}> - \paper{linewidth = 5.875\in; - indent = 0.0; - } -} -) - -COMMENT( The following are defined in script.ly but do not work: - -portato lbheel rbheel lbtoe rbtoe lfheel rfheel lftoe rftoe ) - -In addition, it is possible to place arbitrary strings of text or -TeX() above or below notes by using a string instead of an identifier: -`code(c^"text")'. Fingerings can be placed by simply using digits. -All of these note ornaments appear in the printed output but have no -effect on the MIDI rendering of the music. - -To save typing, a few common symbols can be abbreviated with -single characters: -mudela()( -\score{ \notes { - \property Voice.textstyle = typewriter - c''4-._"c-." s4 - c''4--_"c-{}-" s4 - c''4-+_"c-+" s4 - c''4-|_"c-|" s4 - c''4->_"c->" s4 - c''4-^_"c-\\^{ }" s4 } - \paper { linewidth = 12.\cm; }}) - -Dynamic marks are specified by using an identifier after a note -without a dash: code(c4 \ff). Note that this syntax is inconsistent -with the syntax for other types of ornaments. The available dynamic -marks are: code(\ppp), code(\pp), code(\p), code(\mp), code(\mf), -code(\f), code(\ff), code(\fff), code(\fp), code(sf), and code(\sfz). - -A crescendo mark is started with code(\cr) and terminated with -code(\rc). A decrescendo mark is started with code(\decr) and -terminated with code(\rced). There are also shorthands for these -marks. A crescendo can be started with code(\<) and a decrescendo can -be started with code(\>). Either one can be terminated with code(\!). -Note that code(\!) must go before the last note of the dynamic mark whereas -code(\rc) and code(\rced) go after the last note. Because these marks are -bound to notes, if you want to get several marks during one note, you must use -spacer notes. -mudela(fragment,verbatim,center)( -c'' \< \! c'' d'' \decr e'' \rced -< f''1 {s4 \< \! s4 \> \! s2 } >) - -Tremolo marks can be printed by a note by adding code(:)[var(length)] -after the note. The length must be at least 8. A var(length) value -of 8 gives one line across the note stem. -If the length is omitted, -then the last value is used, or the value of the code(Abbrev) -property if there was no last value. To place tremolo marks in -between two notes, begin with code([:)var(length) and end with code(]). -The tremolo marks will appear instead of beams. Putting more than two -notes in such a construction will produce odd effects. - -[TREMOLO BEAMS TEMPORARILY OUT OF ORDER] - -COMMENT(mudela (fragment,verbatim,center)( -c'2:8 c':32 [:16 e'1 g'] [:8 e'4 f'] -)) - -COMMENT( -Is the last paragraph correct? Is it called "tremolo"? Why is -"abbreviation" used? (What is the unabreviated form?) - -COMMENT( -mudela (fragment,verbatim,center)( -c'4:32 [:16 c'8 d'8] -)) - -) - - -sect(Other Ways to Enter Pitches) - -subsect(Pitch Names in Other Languages) -label(notelang) - -The pitch names can be easily redefined using the code(\notenames) command. -Note name definitions have been provided in various languages. -Simply include the language specific init file. For example: -code(\include "english.ly"). The available language files and the names -they define are: - -verb( Note Names sharp flat -nederlands.ly c d e f g a bes b -is -es -english.ly c d e f g a bf b -s/-sharp -f/-flat -deutsch.ly c d e f g a b h -is -es -norsk.ly c d e f g a b h -iss/-is -ess/-es -svenska.ly c d e f g a b h -iss -ess -italiano.ly do re mi fa sol la sid si -d -b) - -subsect(Relative Pitch Specification) -label(relative) - -One very common error when entering music is to place notes in the wrong -octave. One way to avoid being confused by large numbers of octave changing -marks is to use -the code(\relative) keyword. -Music which appears within code(\relative) is -interpreted differently. The octave of a note is determined by making it as -close to the previous note as possible. The octave changing marks code(') and -code(,) can then be added to raise or lower this note by octaves. You have to -specify a starting pitch because the first note of a list has no predecessor. - -mudela(fragment,verbatim,center)( -\relative c'' { c d b c, d b c' d - b c,, d b } -) - -When the preceeding item is a chord, the first note of the chord is used to -determine the first note of the next chord. But other notes within the second -chord are determined by looking at the immediately preceeding note. - -mudela(fragment,verbatim,center)( -\relative c' { - } -) - -The code(\relative) keyword can only appear in music, so there must be a -surrounding code(\notes) keyword which does not appear in the fragments shown -above. Also note that if the music passed to a code(\relative) keyword -contains a code(\transpose) keyword, the tranposed music will not be -processed in relative mode. An additional code(\relative) must be placed -inside the code(\transpose). - - -subsect(Tranposition of Pitches) -label(transpose) - -Another way to modify the meaning of the note names is to use the -code(\transpose) keyword. This keyword allows you to transpose music. -To use transposition, specify the pitch that middle C should be tranposed to. -It is important to distinguish between enharmonic pitches as they can produce -different transpositions. To transpose up half a step, for example, either -code(\transpose cis') or code(\transpose des') will work. But the first -version will print sharps and the second version will print flats. -In this example, a scale in the key of E is transposed to F, or to E-sharp -with odd results. -mudela(fragment,verbatim,center)( -\relative c' { \key e; - e fis gis a b cis dis e } -) -mudela(fragment,verbatim,center)( -\transpose des' \relative c' { \key e; - e fis gis a b cis dis e } -) -mudela(fragment,verbatim,center)( -\transpose cis' \relative c' { \key e; - e fis gis a b cis dis e } -) -If you want to use both code(\transpose) and code(\relative), then you must use -code(\transpose) first. Any code(\relative) keywords that are outside the -code(\transpose) have no effect on notes that appear inside the -code(\transpose). - -sect(Lyrics) - -Lyrics are entered like notes, with pitches replaced -by text. For example code(Twin-4 kle4 twin-4 kle4) enters four -syllables, each with quarter note duration. Note that the hyphen has -no special meaning for lyrics, and does not introduce special symbols. -See Section ref(modes) for a description of what is interpreted as a lyric. - -In order to instruct LilyPond to write lyrics underneath the -staff, you must enter the lyrics context with code(\type Lyrics). -Lyrics should be entered in lyrics mode which is entered with code(\lyrics). - -Spaces can be introduced into a lyric either by using quotes (code(")) -or by using an underscore without quotes: code(He_could4 not4). All -unquoted underscores are converted to spaces. Here is a full example: -mudela(verbatim)(\score{ - < \notes \transpose c'' {c d e c | c d e c | e f g'2 | - e'4 f g'2 \bar "|."; } - \type Lyrics \lyrics { - DOEXPAND(Fr\)`e-4 re Ja- que DOEXPAND(Fr\)`e- re Ja- que - Dor- mez vous?2 Dor-4 mez vous?2 } - > -}) - -COMMENT( -URG - Fr\`e-4 re Ja- que - Fr\`e- re Ja- que -Why does this warrant an URG? -) - - -COMMENT( - -sect(Chords and Voices) - -Here's a simple chord -mudela(fragment,verbatim,center)( - -) - -here are a few -mudela(fragment,verbatim,center)( -< - { c'()d'()c' } - { e'()f'()e' } - { g'()a'()g' } -> -) - -and similarly voices -mudela(fragment,verbatim)( -< - { \voiceone c'4 g' c' g' } - { \voicetwo c2 g2 } -> -) - -) - -sect(Time) - -LilyPond aligns all musical objects according to the amount of time -they occupy. All of these objects have a duration. When music is -written sequentially using braces the duration is the sum of the -durations of the elements. When music is stacked into simultaneous music -using angle -brackets, the duration is the maximum of the durations of the -elements. - -Because LilyPond knows the durations of all musical elements, the time -signature enables LilyPond to draw bar lines automatically. The time -signature is specified with the code(\time) keyword: code(\time 3/4). -If no time signature is given, LilyPond assumes 4/4. The automatic -generation of bar lines can toggled with the code(\cadenza) keyword, -and an incomplete measure at the start of the music can be created -using the code(\partial) keyword: code(\partial 8*2;) creates a -starting measure lasting two eighth notes. - -In order to help with error checking, you can insert bar markers in -your music by typing code(|). Whenever LilyPond encounters a code(|) -that doesn't fall at a measure boundary, she prints a warning message. - -Rhythmic grouping is a concept closely associated with this. -A default grouping is selected for the chosen time signature. -The default consists of combinations of 2 and 3 beats with as many -groups of 3 as possible, and the groups of 3 coming first. For -example, 4/4 is divided into 2+2 and 8/8 is divided into 3+3+2. This -default grouping can be changed using the \grouping keyword which -takes a list of durations to specify the grouping. - - -COMMENT( -sect(Composition: forming bigger structures) -label(sec:grammar) - -The computer savy user may be interested in a more formal -specification. We can capture what have learned about forming -sentences in Mudela in a context-free grammar. - -latexcommand(\smallskip) - -table(2)(lll)( - row(cell(em(Music))cell(: em(Note))) - row(cell()cell(code(|) em(Rest))) - row(cell()cell(code(|) code({) em(MusicList) code(}))) - row(cell()cell(code(|) code(<) em(MusicList) code(>))) - row(cell()cell(code(|) em(Command))) - row(cell()cell(code(|) code(\type) em(string) code(=) em(string) em(Music))) - row(cell()cell(;)) - row(cell(em(MusicList))cell(: em(empty))) - row(cell()cell(code(|) em(MusicList) em(Music))) - row(cell()cell(;)) -) - -latexcommand(\smallskip) - -In mathematics you can form expressions by combining expressions, -which are ultimately some kind of atom or terminal symbol. The same -goes for Mudela: there are some basic building blocks, and by -combining those you create complex music. - -You can combine music in three ways: -itemize( -it()If you enclose a sequence of music-elements in braces ( code({) - and code(}) ), then you form another kind of music called -sequential music - with those pieces. - The duration of sequential composition is the sum of the durations of its elements - verb( - { c c g g a a g2 } % twinkle twinkle - { { c c g g} { a a g2 } } - ) -it()You can stack music by enclosing a sequence of music elements - with code(<) and code(>). This is called simultaneous music. - The duration of a simultaneous composition is the maximum of the durations - of its elements Example: - verb( - % a-major chord - ) -it()You can form music by transposing music: - verb( - \transpose - d % from c to the d that's almost one octave down - { e4 f4 } % the horizontal music -) -it()verb(\type) -it()verb(\property) -it()verb(\translator) -it()verb(\relative) -) - -Of course you can also combine these three mechanisms. -verb( -{ c } % 4 increasing chords -) - -) - - -sect(Keywords) - -Keywords sometimes appear alone, but usually they require arguments. -A keyword may have a single argument, a sequence of arguments in -braces, or a sequence of arguments separated by spaces and terminated -by a semicolon. The precise syntax of each keyword is shown below. -Keywords must appear in the right context. If you use a keyword in -the wrong place, even if the usage is syntactically correct, you will -get the message ``parse error'' from LilyPond. - - -description( - -dit(code(\absdynamic) code({) var(code) code(})) Internal keyword for -printing dynamic marks such as $f$ under music. The parameter -var(code) is unsigned and specifies the dynamic mark to print. -Normally you should use the more user friendly abbreviations defined -in the init file file(dynamic.ly). - -dit(code(\accepts) var(string)code(;)) This keyword can appear only within a -code(\translator) block. It specifies what contexts are allowed with the -context that is being defined. See Section ref(translators). - -dit(code(\alternative) code({) var(music1) var(music2) ... code(})) -Specifies alternative endings. Must come after a code(\repeat) keyword. - -dit(code(\bar) var(bartype)code(;)) Prints a special bar symbol, or at -measure boundaries, replaces the regular bar symbol with a special -symbol. The argument var(bartype) is a string which specifies the -kind of bar to print. Options are code(":|"), code("|:"), -code(":|:"), code("||"), code("|."), code(".|"), or code(".|."). -These produce respectively a right repeat, a left repeat, a double -repeat, a double bar, a start bar, an end bar, or a thick double bar. -If var(bartype) is set to code("empty") then nothing is printed, but a -line break is allowed at that spot. Note that the printing of special bars -has no effect on the MIDI output. - -dit(code(\cadenza) var(togglevalue)code(;)) Toggles the automatic generation -of bar lines. If var(togglevalue) is 0 then bar line generation is -turne off. If var(togglevalue) is 1 then a bar is immediately -printed and bar generation is turned on. - -dit(code(\clef) var(clefname)code(;)) Allowed only in music. -Sets the current clef. The argument is -a string which specifies the name of the clef. Several clef names are -supported. If code(_8) or code(^8) is added to the end of a clef -name then the clef lowered or raised an octave will be generated. -Here are the supported clef names with middle C shown in each clef: -mudela(center)( -\score{ - \notes{ \cadenza 1; - %\property Voice.textstyle = typewriter - \clef subbass; c'4-"\kern-10mm subbass" - \clef bass; c'4^"\kern -8mm bass" - \clef baritone; c'4_"\kern -10mm baritone" - \clef varbaritone; c'4^"\kern -10mm varbaritone" - \clef tenor; c'4_"\kern -10mm tenor" - \clef "G_8"; c'4^"\kern -6mm G\_8" } - \paper{ linewidth= 4.5 \in; } -} -) -mudela(center)( -\score{ - \notes{\cadenza 1; \clef alto; c'4_"\kern -10mm alto" - \clef scarlatti; c'4_"\kern -4mm scarlatti" - \clef mezzosoprano; c'4^"\kern -10mm mezzosoprano" - \clef soprano; c'4_"\kern -10mm soprano" - \clef treble; c'4^"\kern -6mm treble" - \clef french; c'4_"\kern -10mm french" } - \paper{ linewidth= 4.5 \in; } -} -) -The treble clef can also be obtained using the names code(G) or -code(violin). The bass clef is also available by code(\clef F). - -dit(code(\cm)) Specify a dimension in centimeters. - -dit(code(\consists) var(string)code(;)) This keyword can appear only within a -code(\translator) block. It specifies that an engraver or performer named -var(string) should be added to the translator. See Section -ref(translators). - -dit(code(\duration) code({) var(length) var(dotcount) code(})) Specify note -duration. The parameter var(length) is the negative logarithm (base -2) of duration: 1 is a half note, 2 is a quarter note, 3 is an eighth -note, etc. The number of dots after the note is given by -var(dotcount). - -dit(code(\font) var(string)) Internal keyword. Used within -code(\symboltables) to specify the font. - -dit(code(\grouping) var(durationseq)code(;)) Sets the metric structure of -the measure. Each argument specifies the duration of one metric unit. -For example, code(\duration 16*5;) specifies a grouping of five beats -together in 5/16 time. The default grouping is to have as many groups -of 3 as possible followed by groups of two. - -dit(code(\header) code({) var(key1) = var(val1); var(key2) = var(val2); ... code(})) -Specifies information about the music. A header should appear at the -top of the file describing the file's contents. If a file has -multiple code(\score) blocks, then a header should appear in -each score block describing its contents. Tools like code(ly2dvi) can -use this information for generating titles. Key values that are used -by ly2dvi are: title, subtitle, composer, opus, poet, instrument, -metre, arranger, and piece. - -dit(code(\in)) Specify a dimension in inches. - -dit(code(\include) var(file)) Include the specified file. The -argument var(file) is a string. The full filename including the -file(.ly) extension must be given, and the filename must be quoted. -(An unquoted string will not work here.) - -dit(code(\key) var(pitch) var(type) code(;)) Change the key signature. -var(type) should be code(\major) or code(\minor) to get -var(pitch)-major or var(pitch)-minor, respectively. The second -argument is optional, the default is major keys. -The var(\type) argument can also be given as an integer, which tells -the number of semitones that should be added to the pitch given in the -subsequent code(\key) commands to get the corresponding major key, -e.g. code(\minor) is defined as 3. - -dit(code(\keysignature) var(pitchseq)code(;)) -Specify an arbitrary key signature. The pitches from var(pitch) will -be printed in the key signature in the order that they appear on the list. - -dit(code(\lyrics) var(lyriclist)) Parse var(lyriclist) in lyrics mode. - -dit(code(\maininput)) Internal command. This command is used for creating init -files like file(init.fly) that read the user file into the middle of another -file. Using it in a user file will lead to an infinite loop. - -dit(code(\mark) var(unsigned)code(;) or code(\mark) var(string)code(;)) -Allowed in music only. Prints a mark over or under (depending on the -code(markDirection) property) the staff. -You must add code(Mark_engraver) to the Score context. - -dit(code(\midi) var(statementlist)) Appears in a score block to -indicate that musical output should be produced and to set output -parameters. Can also appear at the top level to set default output -parameters. See code(\tempo). - -dit(code(\mm)) Specify a dimension in millimeters. - -dit(code(\musicalpitch) code({) var(octave) var(note) var(shift) code(})) -Specify note pitch. The octave is specified by an integer, -zero for the octave containing middle C. The note is a number from 0 -to 7, with 0 corresponding to C and 7 corresponding to B. The shift -is zero for a natural, negative to add flats, or positive to add -sharps. - -dit(code(\name) var(context)code(;)) Appears within code(\translator) to -specify the name of the context that the translator handles. See Section -ref(translators). - -dit(code(\notenames) var(assignmentlist)) Define new note names. This -keyword can appear only at the top level. -The argument is a list of definitions of the form -var(name) = var(pitch), where var(pitch) is specified with the -code(\musicalpitch) keyword. - -dit(code(\notes) var(music)) Enter note mode and process the -specified music. - -dit(code(\)code(output) var(string)code(;)) Generate a parse error. - -dit(code(\paper) var(statmentlist)) -Appears in a score block to indicate that the music should be printed -or to set output parameters. Can also appear at the top level to set -default output parameters for all of the score blocks. -The var(statmentlist) contains statements that change features of the -output. See Section ref(paper). - -dit(code(\partial) var(duration)code(;)) Specify that the first measure of -the music lasts only for the specified duration. - -dit(code(\penalty) code(=) var(int)code(;)) Allowed only in music. -Discourage or encourage line breaks. See identifiers code(\break) and -code(\nobreak) in Section ref(ident). - -dit(code(\property) var(contextname)code(.)var(propname) code(=) var(value)) -Sets the var(propname) property of the context var(contextname) to the -specified var(value). All three arguments are strings. Depending on -the context it may be necessary to quote the strings or to leave space -on both sides of the dot. - -dit(code(\pt)) Specify a dimension in points. - -dit(code(\relative) var(pitch) var(music)) Processes the specified -var(music) in relative pitch -mode. In this mode, the octave of a pitch is chosen so that the -pitch is closest to the preceeding pitch. -The argument var(pitch) is -the starting pitch for this comparision. In the case of chords, the -first note of a chord is used as the base for the first pitches in the next -chord. See Section ref(relative). - -dit(code(\remove) var(string)code(;)) Can appear only in a -code(\translator) block. Specifies that a performer or engraver named -var(string) should be removed. See Section ref(translators). - -dit(code(\repeat) var(count) code({) var(music) code(})) -Repeats the specified -music var(count) times. Alternative endings can be specified by adding a -code(\alternative) keyword after the code(\repeat). - -dit(code(\scm) var(scheme)code(;)) Embeds specified Scheme code. - -dit(code(\scmfile) var(filename)code(;)) Reads Scheme code from the specified -file. - -dit(code(\score) var(statementlist)) Create a Score context. This -is the top level notation context. -COMMENT(this still needs work) - -dit(code(\script) code({) var(name) var(instaff) var(withstem) -var(location) var(invertible) var(priority) code(})) This keyword is -used the initialization file(script.ly) to define the various symbols -that can appear above and below notes. The first argument is the name -of the symbol. The second argument var(instaff) is 1 if the symbol -follows the notehead into the staff and 0 if the symbol stays above or -below the staff lines. The third parameter var(withstem) is 0 if the -symbol's placement does not depend on the stem direction; it is 1 if -the symbol should be at the stem end of the note and it is -1 if the -symbol should be at the note head end of the note. The argument -var(location) is set to 1 for symbols that always appear above the -staff; it is -1 for symbols that appear below the staff. If -var(invertible) is set to 1 then the symbol can be inverted; otherwise -it cannot. The last argument var(priority) sets a priority for the -order of placement of several symbols on a single note. - -dit(code(\shape) code(=) var(indent1) var(width1) var(indent2) -var(width2) ... code(;)) Allowed only within code(\paper). Each pair -of var(indent) and var(width) values is a dimension specifying how far -to indent and how wide to make the line. The indentation and width of -successive lines are specified by the successive pairs of dimensions. -The last pair of dimensions will define the characeristics of all -lines beyond those explicitly specified. - -COMMENT(First pair of dimensions seems to be skipped. At least it is -in the example file denneboom.ly.) - -dit(code(\skip) var(duration)code(;)) Skips the amount of time specified by -var(duration). A gap will be left for the skipped time with no notes -printed. It works in Note Mode or Lyrics Mode (but generates a -mysterious error in lyrics). - -dit(code(\spandynamic) code({) var(kind) var(toggle) code(})) Internal -keyword for crescendo and decrescendo symbols. The first parameter -var(kind) is set to 1 for a crescendo and -1 for a decrescendo. The -second parameter is set to 1 to start the mark and 2 to stop it. -Users should use the abbreviations which are defined in the -initialization file file(dynamic.ly). - -dit(code(\symboltables)) Internal keyword. Used to create symbol -tables. See initialization files file(paper*.ly), file(feta*.ly), and -file(table*.ly). - -dit(code(\table)) Internal keyword. Used within code(\symboltables) -to specify the tables. See initialization files. - -dit(code(\tempo) var(duration) = var(perminute)code(;)) Used within -code(\midi) or within music to specify the tempo. For example, -`code(\midi { \tempo 4 = 76;})' requests output with 76 quarter notes -per minute. Note that if the music contains several tempo commands, -only the last one is used to set the tempo for the entire MIDI output. -COMMENT(Is this true?) - -dit(code(\time) var(numerator)code(/)var(denominator)code(;)) Change the time -signature. The default time signature is 4/4. - -dit(code(\times) var(numerator)code(/)var(denominator) var(music)) -Multiply the duration of var(music) by the specified fraction. - -dit(code(\translator) var(statements) or code(\translator) -var(context) = var(name)) The first variant appears only within -code(\paper) and specifies a translator for -converting music to notation. The translator is specified with a -single code(\type) statement and a series of code(\accepts), and -code(\consists) statements. See Section ref(translators). -The second variant appears in -music. It specifies that the current the contexts -contained within the specified context should be shifted to the -context with the specified name. - -COMMENT( \translator seems like a strange name for the second -operation, and is the overloading desireable? ) - -dit(code(\transpose) var(pitch) var(music)) Transposes the specified -music. Middle C is tranposed to var(pitch). This is allowed in music only, -and if it appears inside code(\relative), then any notes specified for -transposition should be specified inside another code(\relative). See Section -ref(transpose). - -dit(code(\type) var(contexttype) [code(=) var(contextname)] -var(music) or code(\type) var(translatortype)code(;)) The first -variant is used only within music to create an instance of a -context. The new context can optionally be given a name. The -specified var(music) is processed in the new context. The second -variant appears within a code(\translator) block and specifies the -type of translator being created. - -dit(code(\version) var(string)) Specify the version of Mudela that a -file was written for. The argument is the version number, for example -code("1.0.1"). Note that the Mudela version is different from the -LilyPond version. - -) - - -sect(Notation Contexts) - -Notation contexts provide information that appears in printed music -but not in the music itself. A new musical context is created using -the code(\type) keyword: `code(\type) var(contexttype) [code(=) -var(contextname)] var(music)'. The following context types are -allowed. - -description( - -dit(code(LyricVoice)) Corresponds to a voice with lyrics. Handles the printing -of a single line of lyrics. - -dit(code(Voice)) Corresponds to a voice on a staff. - This context handles the conversion of noteheads, - dynamic signs, stems, beams, super- and subscripts, slurs, ties and rests. - -dit(code(Lyrics)) Typesets lyrics. It can contain code(LyricVoice) contexts. - -dit(code(Staff)) Handles clefs, bar lines, keys, - accidentals. It can contain code(Voice) contexts. - -dit(code(RhythmicStaff)) A context like code(Staff) but for printing -rhythms. Pitches are ignored; the notes are printed on one line. -It can contain code(Voice) contexts. - -dit(code(GrandStaff)) Contains code(Staff) or code(RhythmicStaff) -contexts. It adds a brace on the left side grouping the staffs -together. The bar lines of the contained staffs are connected vertically. -It can contain code(Staff) contexts. - -dit(code(StaffGroup)) Contains code(Staff) or code(RhythmicStaff) -contexsts. Adds a bracket on the left side, grouping the staffs -together. The bar lines of the contained staffs are connected vertically. -It can contain code(Staff), code(RhythmicStaff), code(GrandStaff) or code(Lyrics) contexts. - -dit(code(ChoirStaff)) Identical to code(StaffGroup) except that the -contained staffs are not connected vertically. - -dit(code(Score)) This is the top level notation context. It is specified with -the code(\score) keyword rather than the code(\type) command. No -other context can contain a code(Score) context. This context handles -the administration of time signatures. It also makes sure that items -such as clefs, time signatures, and key-signatures are aligned across -staffs. It can contain code(Lyrics), code(Staff), -code(RhythmicStaff), code(GrandStaff), code(StaffGroup), and -code(ChoirStaff) contexts. - -) - -The various contexts have properties associated with them. These -properties can be changed using the code(\property) command: -`code(\property) var(context)code(.)var(propname) code(=) var(value)'. -Properties can also be set within the code(\translator) block -corresponding to the appropriate context. In this case, they are -assigned by `var(propname) code(=) var(value)'. The settings made with -code(\property) are processed after settings made in the code(\translator) -block, so the code(\property) settings will override code(\translator) -settings. - -The code(\property) keyword will create any property you specify. -There is no guarantee that a property will actually be used. If you -spell a property name wrong, there will be no error message. In order to find -out what properties are used, you must search the source code -for code(get_property). -Properties that are set in one context are inherited by all of the -contained contexts. This means that a property valid for the Voice -context can be set in the Score context (for example) and thus take -effect in all Voice contexts. - -subsubsubsect(Lyrics properties) - -description( - -dit(code(textstyle)) Set the font for lyrics. The available font -choices are code(roman), code(italic), code(bold), code(large), -code(Large), code(typewriter), and code(finger). The code(finger) -font can only display numbers. Note also that you must be careful -when using code(\property) in Lyrics mode. Because of the way strings -are parsed, either put quotes around the arguments to code(\property) -or be sure to leave a space on both sides of the dot. - -dit(code(textalignment)) Controls alignment of lyrics. Set to code(\left) -to align the left end of the lyric with the note; set to code(\right) to -align the right end of the lyric with the note. Set to code(\center) to -align the center of the lyric with the note. - -) - -subsubsubsect(Voice properties) - -description( - -dit(code("midi_instrument")) Sets the instrument for MIDI output. This -property name must be quoted because of the embedded underscore. If -this property is not set then LilyPond will use the code(instrument) -property. This must be set to one of the strings on the list of MIDI -instruments that appears in Section ref(midilist). If you use a -string which is not listed, LilyPond will silently substitute piano. - -dit(code(transposing)) Tranpose the MIDI output. Set this property to -the number of half-steps to transpose by. - -dit(code(ydirection)) Determines the direction of stems, subscripts, -beams, slurs, and ties. Set to code(\down) to force them down, -code(\up) to force them up, or code(\free) to let LilyPond decide. -This can be used to distinguish between voices on the same staff. The -code(\stemdown), code(\stemup), and code(\stemboth) identifiers set -this property. See also the identifiers code(\voiceone), -code(\voicetwo), code(\voicethree) and code(\voicefour). - -dit(code(slurydirection)) Set to code(\free) for free choice of slur -direction, set to code(\up) to force slurs up, set to code(\down) to -force slurs down. The shorthands code(\slurup), code(\slurdown), and -code(\slurboth) are available. - -dit(code(tieYDirection)) Set to code(\free) for free choice of tie -direction, set to code(\up) to force ties up, set to code(\down) to -force ties down. - -dit(code(slurdash)) Set to 0 for normal slurs, 1 for dotted slurs, and -a larger value for dashed slurs. Identifiers code(\slurnormal) and -code(\slurdotted) are predefined to set the first two settings. - -dit(code(hshift)) Set to 1 to enable LilyPond to shift notes -horizontally if they collide with other notes. This is useful when -typesetting many voices on one staff. The identifier code(\shift) is -defined to enable this. - -dit(code(dynamicdir)) Determines location of dynamic marks. Set to -code(\up) to print marks above the staff; set to code(\down) to print -marks below the staff. - -dit(code(textalignment)) Controls alignment of superscripted and -subscripted text. Set to \left to align the left end of the text with -the note; set to \right to align the right end of the text with the -note. Set to \center to align the center of the text with the note. - -dit(code(textstyle)) Set the text style for superscripts and -subscripts. See above for list of text styles. - -dit(code(fontsize)) Can be used to select smaller font sizes for -music. The normal font size is 0, and the two smaller sizes are -1 -and -2. - -dit(code(pletvisibility)) Determines whether tuplets of notes are -labelled. Setting to 0 shows nothing; setting to 1 shows a number; -setting to 2 shows a number and a bracket if there is no beam; setting -to 3 shows a number, and if there is no beam it adds a bracket; -setting to 4 shows both a number and a bracket unconditionally. - -dit(code(markScriptPadding)) Determines the extra space added between -the mark and the closest staff line or note. - -dit(code(markDirection)) Determines if marks should be printed above -or below the staff. Set to code(\up) to print marks above the staff; -set to code(\down) to print marks below the staff. - -) - -subsubsubsect(Staff properties) - -description( - -dit(code(defaultClef)) Determines the default clef. See code(\clef) -keyword. - -dit(code(nolines)) Sets the number of lines that the staff has. - -dit(code(barAlways)) If set to 1 a bar line is drawn after each note. - -dit(code(defaultBarType)) Sets the default type of bar line. See -code(\bar) keyword. - -dit(code(keyoctaviation)) If set to 1, then keys are the same in all -octaves. If set to 0 then the key signature for different octaves can -be different and is specified independently: code(\keysignature bes -fis'). The default value is 1. Can be set to zero with -code(\specialkey) or reset to 1 with code(\normalkey). - -dit(code(instrument) and code(instr)) If code(Staff_margin_engraver) -is added to the Staff translator, then the code(instrument) property -is used to label the first line of the staff and the code(instr) -property is used to label subsequent lines. If the -code(midi_instrument) property is not set then code(instrument) is -used to determine the instrument for MIDI output. -COMMENT(This prints the instrument name on top of the staff lines.) - -dit(code(abbrev)) Set length for tremolo to be used if no length is -explicitly specified. - -dit(code(createKeyOnClefChange)) Set to a nonempty string if you want key -signatures to be printed when the clef changes. Set to the empty string (the -default) if you do not want key signatures printed. - - -dit(code(timeSignatureStyle)) Changes the default two-digit layout - for time signatures. The following values are recognized: - description( - dit(code(C)) 4/4 and 2/2 are typeset as C and struck C, - respectively. All other time signatures are written with two digits. - dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with - old-style mensuration marks. All other time signatures are - written with two digits. - dit(code(1)) All time signatures are typeset with a single - digit, e.g. 3/2 is written as 3. - dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2), - code(old3/4), code(old4/4), code(old6/4) or - code(old9/4)) Tells Lilypond to use a specific symbol as time - signature. - ) -The different time signature characters are shown below with -their names: -mudela(fragment,center)( -\relative c'' { -\property Voice.textstyle = typewriter -\property Staff.timeSignatureStyle = "C2/2" -\time 2/2; a2^"C2/2" a2 -\property Staff.timeSignatureStyle = "C4/4" -\time 2/2; a2^"C4/4" a2 -\property Staff.timeSignatureStyle = "old2/2" -\time 2/2; a2^"old2/2" a2 -\property Staff.timeSignatureStyle = "old3/2" -\time 2/2; a2^"old3/2" a2 -\property Staff.timeSignatureStyle = "old4/4" -\time 2/2; a2^"old4/4" a2 -\property Staff.timeSignatureStyle = "old6/4" -\time 2/2; a2^"old6/4" a2 -\property Staff.timeSignatureStyle = "old9/4" -\time 2/2; a2^"old9/4" a2 -} -) - - -) - - - -subsubsubsect(GrandStaff properties) - -description( - -dit(code(maxVerticalAlign)) Set the maximum vertical distance between -staffs. - -dit(code(minVerticalAlign)) Set the minimum vertical distance between -staffs. - -) - -subsubsubsect(Score properties) - -description( - -dit(code(SkipBars)) Set to 1 to skip the empty bars that are produced -by multimeasure notes and rests. These bars will not appear on the -printed output. Set to zero (the default) to expand multimeasure -notes and rests into their full length, printing the appropriate -number of empty bars so that synrchonization with other voices is -preserved. COMMENT(meaning of "skip" here seems to be different from -the meaning used for the keyword \skip.) - -dit(code(beamquantisation)) Set to code(\none) for no quantization. -Set to code(\normal) to quantize position and slope. Set to -code(\traditional) to avoid wedges. These three settings are -available via code(\beamposfree), code(\beamposnormal), and -code(\beampostraditional). - -dit(code(beamslopedamping)) Set to code(\none) for undamped beams. -Set to code(\normal) for damped beams. Set to code(\infinity) for -beams with zero slope. The identifiers code(\beamslopeproportional), -code(\beamslopedamped), and code(\beamslopezero) each set the -corresponding value. - -) - - -COMMENT( - -Mystery properties: - -bar-number-engraver.cc: "barScriptPadding" vertical space for numbers -mark-engraver.cc: "markScriptPadding" vertical space for marks -span-bar-engraver.cc: "singleStaffBracket" do single staffs get a bracket? -bar-column-engraver.cc: "barColumnPriority" -bar-number-engraver.cc: "barNumberBreakPriority" Control horizontal ordering -mark-engraver.cc: "markBreakPriority" of bars, clefs, keysig -staff-margin-engraver.cc:"marginBreakPriority" etc. Slated for revision -) - -sect(Pre-defined Identifiers) -label(ident) - -Various identifiers are defined in the initialization files to -provide shorthands for some settings. - -description( -dit(code(\break)) Force a line break in music by using a large -argument for the keyword code(\penalty). -dit(code(\center)) Used for setting textalignment property. Is set to 0. -dit(code(\cr)) Start a crescendo. -dit(code(\decr)) Start a decrescendo. -dit(code(\down)) Used for setting direction setting properties. Is -equal to -1. -dit(code(\f)) Print forte symbol on the preceeding note. -dit(code(\ff)) Print fortissimo symbol on the preceeding note. -dit(code(\fff)) Print fortississimo symbol on preceeding note. -dit(code(\fp)) Print fortepiano symbol on preceeding note. -dit(code(\free)) Used for setting direction setting properties. Is -equal to 0. -dit(code(\Gourlay)) Used for setting the paper variable -code(castingalgorithm). Is equal to 1.0. -dit(code(\infinity)) Used for setting the Score.beamslopedamping -property. Is actually equal to 10000. -dit(code(\left)) Used for setting textalignment property. Is equal to -1. -dit(code(\major)) Used as the second argument of the code(\key) -command to get a major key. -dit(code(\minor)) Used as the second argument of the code(\key) -command to get a minor key. -dit(code(\mf)) Print mezzoforte symbol on preceeding note. -dit(code(\mp)) Print mezzopiano symbol on preceeding note. -dit(code(\nobreak)) Prevent a line break in music by using a large -negative argument for the keyword code(\penalty). -dit(code(\none)) Used for setting Score.beamslopedamping and -Score.beamquantisation properties. Is equal to 0. -dit(code(\normal)) Used for setting Score.beamslopedamping and -Score.beamquantisation properties. Is equal to 1. -dit(code(\normalkey)) Select normal key signatures where each octave -has the same key signature. This sets the Staff.keyoctaviation property. -dit(code(\p)) Print a piano symbol on preceeding note. -dit(code(\pp)) Print pianissimo symbol on preceeding note. -dit(code(\ppp)) Print pianississimo symbol on preceeding note. -dit(code(\rc)) Terminate a crescendo. -dit(code(\rced)) Terminate a decrescendo -dit(code(\right)) Used for setting textalignment property. Is set to 1. -dit(code(\sf)) Print a ?? symbol on preceeding note. -dit(code(\sfz)) Print a ?? symbol on preceeding note. -dit(code(\shiftoff)) Disable horizontal shifting of note heads that collide. -Sets the Voice.hshift property. -dit(code(\shifton)) Enable note heads that collide with other note heads -to be shifted horiztonally. Sets the Voice.hshift property. -dit(code(\slurboth)) Allow slurs to be above or below notes. This -sets the Voice.slurydirection property. -dit(code(\slurdown)) Force slurs to be below notes. This sets the -Voice.slurydirection property. -dit(code(\slurup)) Force slurs to be above notes. This sets the -Voice.slurydirection property. -dit(code(\specialkey)) Allow keys signatures do differ in different -octaves. This sets the Staff.keyoctaviation property. -dit(code(\stemboth)) Allow stems, beams, and slurs to point either -direction. This sets the Voice.ydirection property. -dit(code(\stemdown)) Force stems, beams, and slurs to point down. -This sets the Voice.ydirection property. -dit(code(\stemup)) Force stems, beams and slurs to point up. This -sets the Voice.ydirection property. -dit(code(\traditional)) Used for setting the -Score.beamquantisation property. Is equal to 2. -dit(code(\up)) Used for setting various direction properties. Is -equal to 1. -dit(code(\voiceone)) Enter Voice context called code(one) and force stems down. -(See code(\stemdown).) -dit(code(\voicetwo)) Enter Voice context called code(two) and force stems -up. (See code(\stemup).) -dit(code(\voicethree)) Enter Voice context called code(three) and force stems -up. -dit(code(\voicefour)) Enter Voice context called code(four), force stems down -and turn on horizontal shifting. (See code(\stemdown) and code(\shifton).) -dit(code(\Wordwrap)) Used for setting the paper variable -code(castingalgorithm). Equal to 0.0. -) - - -sect(Output) -label(output) -label(paper) - -The output produced by LilyPond is controlled by the code(\paper) and -code(\midi) keywords. These keywords appear in the code(\score) block -to indicate that printed or musical output should be produced. If -neither keyword appears in a code(\score) block, then paper output is -produced but MIDI output is not produced. - -The contents of the code(\paper) and code(\midi) blocks can change the -output in various ways. These blocks can appear at the top level of a -Mudela file to set default parameters for each type of output. It is -still necessary to explicitly specify the output type in the -code(\score) blocks if you don't want the default behavior of -producing only paper output. - -The code(\paper) and code(\midi) blocks -may begin with an optional identifier reference. No -identifier references are allowed anywhere else in the block. -The code(\paper) block can contain the code(\shape) keyword; the -code(\midi) block can contain the code(\tempo) keyword. Both of them -can contain code(\translator) keywords. The code(\paper) block can -also contain identifier assignments and parameter assignments. Unlike -at the top level, these assignments must be terminated by a semicolon. - - -subsect(Paper variables) - -There are a large number of paper variables that are used to control -details of the layout. Usually you will not want to change these -variables; they are set by default to vaules that depend on the font -size in use. The only way to find out what variables are supported is -to search the source code for code(get_var). Two variables that you -may want to change are code(linewidth) and code(indent). - -In order to change the font size used for the output, many variables -need to be changed. Some identifiers and initialization files can -simplify this process. The default size is 20pt. In order to select -a different size, you must do two things. At the top level, do -code(\include "paper)var(SZ)code(.ly") where var(SZ) is the height of -the staff in points. Values presently allowed are 11, 13, 16, 20, and -26. This loads some definitions, but does not cause them to take -effect. In order to actually change the size, you must use one of the -identifiers: code(\paper_eleven), code(\paper_thirteen), -code(\paper_sixteen), code(\paper_twenty) or code(\paper_twentysix) -inside a code(\paper) block. - - -description( - dit(var(integer)) If an integer appears on the left side of an -assignment then a code(\symboltables) keyword must appear on the right -side. This defines a music font at a particular size. See Voice -property code(\fontsize). - -dit(code(arithmetic_basicspace) and code(arithmetic_multiplier)) -The space taken by a note is determined by the formula -COMMENT( - -)verb(arithmetic_multiplier * ( c + log2 (time) ))COMMENT( - -) where code(time) is the amount of time a note occupies. The value -of code(c) is chosen such that the smallest space within a measure is -arithmetic_basicspace. The smallest space is the one following the -shortest note in the measure. Typically arithmetic_basicspace is set -to the width of a quarter note head. - -dit(code(barsize)) Specify height of bars. This value may need to be -adjusted if you change the number of lines in the staff. -dit(code(beam_dir_algorithm)) Specify algorithm for determining -whether beams go up or down. It is real valued. If set to 2.0 then -majority selection is used. If set to 3.0, then mean selection is -used based on the mean center distance. If set to 4.0 then median -selection is used, based on the median center distance. -dit(code(beam_ideal_stem1)) -dit(code(beam_ideal_stem2)) -dit(code(beam_minimum_stem1)) -dit(code(beam_minimum_stem2)) -dit(code(beam_multiple_break)) -dit(code(beam_slope_damp_correct_factor)) -dit(code(beam_thickness)) Specify the thickness of beams. -dit(code(castingalgorithm)) -dit(code(forced_stem_shorten)) Stems that have been forced to go the -unnatural direction are shortened by this amount. Equal to -code(\interline) by default. -dit(code(gourlay_energybound)) -dit(code(gourlay_maxmeasures)) Maximum number of measures per line -when using Gourlay method. -Decreasing this greatly reduces computation time. Default value: 10. -dit(code(indent)) Sets the indentation of the first line of music. -dit(code(interbeam)) -dit(code(interbeam4)) -dit(code(interline)) The distance between two staff -lines, calculated from the center of the lines. -dit(code(linewidth)) Sets the width of the lines. If it is set to --1.0, then a single unjustified line is produced. -dit(code(notewidth)) Width of an average note head. -dit(code(output)) Specifies an alternate -name for the TeX() output. A file(.tex) extension will be added to -the string you specify. -dit(code(rulethickness)) Determines thickness of staff lines and bars. -dit(code(slur_clip_angle)) -dit(code(slur_clip_height)) -dit(code(slur_clip_ratio)) -dit(code(slur_height_limit)) Specifies the maximum height of slurs. -Normally equal to staff_height. -dit(code(slur_ratio)) Specifes the ratio of slur hight to slur width -to aim for. Default value is 0.3. -dit(code(slur_rc_factor)) -dit(code(slur_slope_damping)) Allows slurs to start and end at -different heights ???? Default value is 0.5. -dit(code(slur_thickness)) Specify slur thickness. Equal to code(1.4 * -\staffline) by default. -dit(code(slur_x_gap)) Horizontal space between note and slur. Set to -code(\interline / 5) by default. -dit(code(slur_x_minimum)) -dit(code(staffheight)) The height of the staff from the center of the -bottom line to the center of the top line. Equal to to code(4 * \interline). -dit(code(stem_length)) Specify length of stems for notes in the staff -that don't have beams. -dit(code(stemthickness)) Specifies the thickness of the stem lines. -dit(code(tie_slope_damping)) -dit(code(tie_x_minimum)) -) - - -subsect(MIDI Instrument Names) -label(midilist) - -The MIDI instrument name is set by the code(Staff."midi_instrument") -property or, if that property is not set, the code(Staff.instrument) -property. The instrument name should be chosen from this list. If -string does not exactly match one from this list then LilyPond uses -the default piano. - -COMMENT( acordina = accordion, tango accordian = concertina - distortion guitar = distorted guitar - orchestral strings = harp - pan flute = wood flute? ) - -verb("acoustic grand" "contrabass" "lead 7 (fifths)" -"bright acoustic" "tremolo strings" "lead 8 (bass+lead)" -"electric grand" "pizzicato strings" "pad 1 (new age)" -"honky-tonk" "orchestral strings" "pad 2 (warm)" -"electric piano 1" "timpani" "pad 3 (polysynth)" -"electric piano 2" "string ensemble 1" "pad 4 (choir)" -"harpsichord" "string ensemble 2" "pad 5 (bowed)" -"clav" "synthstrings 1" "pad 6 (metallic)" -"celesta" "synthstrings 2" "pad 7 (halo)" -"glockenspiel" "choir aahs" "pad 8 (sweep)" -"music box" "voice oohs" "fx 1 (rain)" -"vibraphone" "synth voice" "fx 2 (soundtrack)" -"marimba" "orchestra hit" "fx 3 (crystal)" -"xylophone" "trumpet" "fx 4 (atmosphere)" -"tubular bells" "trombone" "fx 5 (brightness)" -"dulcimer" "tuba" "fx 6 (goblins)" -"drawbar organ" "muted trumpet" "fx 7 (echoes)" -"percussive organ" "french horn" "fx 8 (sci-fi)" -"rock organ" "brass section" "sitar" -"church organ" "synthbrass 1" "banjo" -"reed organ" "synthbrass 2" "shamisen" -"accordion" "soprano sax" "koto" -"harmonica" "alto sax" "kalimba" -"concertina" "tenor sax" "bagpipe" -"acoustic guitar (nylon)" "baritone sax" "fiddle" -"acoustic guitar (steel)" "oboe" "shanai" -"electric guitar (jazz)" "english horn" "tinkle bell" -"electric guitar (clean)" "bassoon" "agogo" -"electric guitar (muted)" "clarinet" "steel drums" -"overdriven guitar" "piccolo" "woodblock" -"distorted guitar" "flute" "taiko drum" -"guitar harmonics" "recorder" "melodic tom" -"acoustic bass" "pan flute" "synth drum" -"electric bass (finger)" "blown bottle" "reverse cymbal" -"electric bass (pick)" "skakuhachi" "guitar fret noise" -"fretless bass" "whistle" "breath noise" -"slap bass 1" "ocarina" "seashore" -"slap bass 2" "lead 1 (square)" "bird tweet" -"synth bass 1" "lead 2 (sawtooth)" "telephone ring" -"synth bass 2" "lead 3 (calliope)" "helicopter" -"violin" "lead 4 (chiff)" "applause" -"viola" "lead 5 (charang)" "gunshot" -"cello" "lead 6 (voice)") - - - -subsect(Translators) -label(translators) - -The behavior of notation contexts is defined by the translators for -those contexts. The translator for a context specifies what notations -are handled by the context, it specifies what other contexts the -context can contain, and it sets property values for the context. -There are different translators for each type of output. The -translators for paper output are defined in file(engraver.ly). The -translators for MIDI output are defined in file(performer.ly). - -The first thing that appears inside a code(\translator) definition is -the type of the context being created. This is specified with the -code(\type) keyword: code(\type) var(typename)code(;). After the type -of the context is specified, property assignments, the code(\name) -keyword and code(\consists), code(\accepts), and code(\remove) -keywords can appear in any order. The code(\name) keyword specifies -the name of the context that is handled by the translator. If the -name is not specified, the translator won't do anything. Each -code(\accepts) keyword specifies what contexts can be contained inside -this one. The code(\consists) keywords specify which notations are -handled by the context. Each code(\consists) keyword specifies the -name of an engraver (for paper ouput) or performer (for MIDI output) -which handles a certain notation. The code(\remove) keyword can be -used to remove a performer or engraver from the translator. - -In the code(\paper) block, it is also possible to define translator -identifiers. Like other block identifiers, the identifier can only -be used as the very first item of a translator. In order to define -such an identifier outside of code(\score), you must do -verb(\paper{ foo=\translator{ ... } -\score{ - \notes{ ... } - \paper{ \translator{ \foo ... } } -}) - -Some All of the standard translators have predefined identifiers, making -it easy to redefine these contexts by adding or removing items. -The predefined identifiers are: code(StaffContext), -code(RhythmicStaffContext), code(VoiceContext), code(ScoreContext), code(ScoreWithNumbers) - - -subsubsect(Paper Types and Engravers and Pre-defined Translators) - -Some pre-defined identifiers can simplify modification of translators. -The pre-defined identifiers are: -description( -dit(code(StaffContext)) Default Staff context. -dit(code(RhythmicStaffContext)) Default RhythmicStaff context. -dit(code(VoiceContext)) Default Voice context. -dit(code(ScoreContext)) Default Score context. -dit(code(ScoreWithNumbers)) Score context with numbering at the -Score level. -dit(code(BarNumberingStaffContext)) Staff context with numbering at -the Staff level. -dit(code(HaraKiriStaffContext)) -dit(code(OrchestralPartStaffContext)) -dit(code(OrchestralScoreContext)) -) -Using these pre-defined values, you can remove or add items to the -translator verb(\paper{ \translator{ \StaffContext - \remove Some_engraver; - \consists Different_engraver; }}) - - - -There are four types for paper translators: -description( - dit(code(Engraver_group_engraver)) - dit(code(Hara_kiri_line_group_engraver)) - dit(code(Line_group_engraver_group)) - dit(code(Score_engraver)) -) -COMMENT( The names of these types seem somewhat confusing. ) - -The engravers for paper output are: - -description( -dit(code(Abbreviation_beam_engraver)) -dit(code(Bar_column_engraver)) -dit(code(Bar_engraver)) Engraves bar lines. Normally in code(Staff) and -code(RhythmicStaff). -dit(code(Bar_number_engraver)) Engrave bar numbers. These numbers -appear at the start of each line. Not normally in any translator. Can -be added to code(Score) for Score-wide numbering or to code(Staff) for -numbering on each staff. - -dit(code(Beam_engraver)) Handles beam requests by engraving beams. Normally -appears in the code(Voice) translator. If omitted, then notes will be printed -with flags instead of beams. - -dit(code(Beam_req_swallow_translator)) Swallows beam requests. In -code(LyricVoice). -dit(code(Clef_engraver)) Engraves the clef symbol. Normally in code(Staff). -dit(code(Collision_engraver)) -dit(code(Dot_column_engraver)) Engraves dots on dotted notes shifted to the -right of the note. Normally in code(Voice). If omitted, then dots appear on -top of the notes. -dit(code(Dynamic_engraver)) Engraves dynamics symbols. Normally in code(Voice). -dit(code(Font_size_engraver)) -dit(code(Key_engraver)) Engraves the key signature. Normally in code(Staff). -dit(code(Local_key_engraver)) -dit(code(Lyric_engraver)) Engraves lyrics. Normally in code(LyricVoice). -dit(code(Multi_measure_rest_engraver)) Engraves multi-measure rests that are -produced with code(R). Normally in code(Voice). -dit(code(Piano_bar_engraver)) -dit(code(Pitch_squash_engraver)) Treat all pitches as middle C. Used in -code(RhythmicStaff). Note that the notes move, but the locations of -accidentals stay the same. -dit(code(Plet_engraver)) Engraves brackets and the number over tuplets. In -code(Voice). -dit(code(Plet_swallow_engraver)) Swallows tuplet requests without any output. -In code(LyricVoice). -COMMENT( Should this be named Plet_req_swallow_translator? ) -dit(code(Priority_horizontal_align_engraver)) -dit(code(Repeat_engraver)) Handles repeats? In code(Staff) and - code(RhythmicStaff). -dit(code(Rest_collision_engraver)) Handles collisions of rests. In code(Staff). -dit(code(Rest_engraver)) Engraves rests. Normally in code(Voice). -dit(code(Rhythmic_column_engraver)) -dit(code(Score_priority_engraver)) -dit(code(Script_engraver)) Handles note ornaments generated by code(\script). -Normally in code(Voice). -dit(code(Separating_line_group_engraver)) -dit(code(Skip_req_swallow_translator)) -dit(code(Slur_engraver)) Engraves slurs. Normally in code(Voice). -dit(code(Span_bar_engraver)) Engraves lines across multiple staffs. Normally -in code(Staffgroup) and code(GrandStaff). Removing this from code(StaffGroup) -gives the definition of code(ChoirStaff). -dit(code(Span_score_bar_engraver)) -dit(code(Staff_group_bar_engraver)) -dit(code(Staff_margin_engraver)) Prints the name of the instrument -(specified by code(Staff.instrument) and code(Staff.instr)) at the -left of the staff. -dit(code(Staff_sym_engraver)) -dit(code(Stem_engraver)) Engraves stems. Normally in code(Voice). -dit(code(Ties_engraver)) Engraves ties. Normally in code(Voice). -dit(code(Time_signature_engraver)) Engraves the time signature. Normally in -code(Staff) and code(RhythmicStaff). -dit(code(Timing_engraver)) Responsible for synchronizing timing information -from staffs. Normally in code(Score). In order to create polyrhythmic music, -this engraver should be removed from code(Score) and placed in code(Staff). -dit(code(Tuplet_engraver)) Engraves tuplet brackets? In code(Staff). -dit(code(Vertical_align_engraver)) -) - - -subsubsect(MIDI Types and Performers) - -The types available for MIDI translators are: -description( -dit(code(Performer_group_performer)) -dit(code(Score_performer)) -dit(code(Staff_performer)) -) - -The performers for MIDI translators are: -description( -dit(code(Key_performer)) -dit(code(Time_signature_performer)) -dit(code(Note_performer)) -dit(code(Lyric_performer)) -dit(code(Swallow_performer)) -) - diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo index d963065b21..f8298855ce 100644 --- a/Documentation/topdocs/INSTALL.yo +++ b/Documentation/topdocs/INSTALL.yo @@ -183,8 +183,6 @@ verb( Options to configure include: description( -dit(bf(--enable-guile)) - Link in GUILE (experimental) dit(bf(--enable-printing)) Enable debugging print routines (lilypond bf(-D) option) dit(bf(--enable-optimise)) diff --git a/INSTALL.txt b/INSTALL.txt index 1e13825347..e4a952b2a5 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -294,9 +294,6 @@ also use Options to configure include: ---enable-guile - Link in GUILE (experimental) - --enable-printing Enable debugging print routines (lilypond -D option) @@ -342,13 +339,14 @@ Example: suppose I want to build with and without profil- ing. Then I'd use the following for the normal build, - configure --prefix=~ --disable-optimise --enable-checking - make - make install + configure --prefix=~ --disable-optimise --enable-checking + make + make install + and for the profiling version, I specify a different config- uration. @@ -396,8 +394,6 @@ CAVEATS o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You should turn off this flag for this - - file. @@ -407,10 +403,6 @@ EXAMPLE This is what I type in my xterm: - - - - lilypond someinput.ly tex someinput.tex xdvi someinput& @@ -459,9 +451,6 @@ sources. You can make the rpm by issuing - - - rpm -tb lilypond-x.y.z.tar.gz rpm -i /usr/src/redhat/RPMS/i386/lilypond-x.y.z diff --git a/NEWS b/NEWS index 7944916b79..9234df1a8e 100644 --- a/NEWS +++ b/NEWS @@ -1,40 +1,7 @@ ---- ../lilypond-1.1.23.ms1/NEWS Mon Jan 25 10:22:34 1999 -++ b/NEWS Mon Jan 25 13:34:19 1999 -@@ -1,3 +1,7 @@ -pl 23.ms2 - - property noteheadStyle - - first attempt to make harmonics : see input/test/harmonics.fly - - pl 23.ms1 - - sinfonia.ly: several fixes - - dynamics--- ../lilypond-1.1.23/NEWS Tue Jan 19 16:29:41 1999 -++ b/NEWS Mon Jan 25 10:22:34 1999 -@@ -1,3 +1,13 @@ -pl 23.ms1 - - sinfonia.ly: several fixes - - dynamics - * increased range pppppp to ffffff - * added sp, spp, sff, rfz - * example see input/test/tchaikovsky.ly - * updated dynamics in refman +pl 24, Hacking Apart Together (Jan 25) -******* - - pl 22.jcn4 - - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats - - bf: :|, |:--- ../lilypond-1.1.23.jcn7/NEWS Sun Jan 24 13:35:45 1999 -++ b/NEWS Sun Jan 24 21:29:07 1999 -@@ -1,3 +1,6 @@ -pl 23.jcn8 - - tfm reader; revamped code from fontutils-0.6 - - pl 23.jcn7 - - bf: piano-brace size (veels te simpel: kruis vingers tegen reject) - - crude autobeam stuff in mi2mu--- ../lilypond-1.1.23/NEWS Tue Jan 19 10:29:41 1999 -++ b/NEWS Sat Jan 23 20:13:39 1999 -@@ -1,3 +1,12 @@ pl 23.jbr1 - - scripts/ly2dvi.py: Windows 95 shell does not support redirection + - scripts/ly2dvi.py: Windows 95 shell does not support redivrection of stderr. We now distribute ash and use it when needed. - stepmake/bin/package-zip32.sh: distribute ash, and guild ice-9/ directory. We build and distribute manpages in html format instead @@ -42,31 +9,80 @@ pl 23.jbr1 - Documentation/ntweb: Updated doco and now distributing as a self extracted binary with install script. - pl 22.jcn4 - - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats - - bf: :|, |:--- ../lilypond-1.1.23.jcn4/NEWS Fri Jan 22 17:54:13 1999 -++ b/NEWS Sat Jan 23 16:13:25 1999 -@@ -1,3 +1,6 @@ -pl 23.jcn5 - - verder hakken aan repeat-engraver URG - - pl 23.jcn4 - - hakken aan repeat-engaver - --- ../lilypond-1.1.23.jcn3/NEWS Thu Jan 21 18:57:17 1999 -++ b/NEWS Fri Jan 22 17:54:13 1999 -@@ -1,3 +1,6 @@ -pl 23.jcn4 - - hakken aan repeat-engaver - - pl 23.jcn3 - - succussfully removed []s from wtk1-fugue2.ly - - bf + smarter autobeamerpl 23.mb1 +pl 23.hwn4 + - bugfixes + - changed All_font_metrics to do TFM as well. + - changed init/ to ly/ + +pl 23.jcn8 + - tfm reader; revamped code from fontutils-0.6 + +pl 23.hwn3 + - {Bar numbers|staff margin stuff|marks} fixed using +Bar_script_engraver as base class + - bf: PS points != Lily \pt + - junked Bar_column_engraver + - junked Text_item and some old files. + + +pl 23.jcn7 + - bf: piano-brace size (veels te simpel: kruis vingers tegen reject) + - crude autobeam stuff in mi2mu + - brevis, longa chords: c1*2,*4 + - mutopia/E.Satie/petite-ouverture-a-danser.ly + - prop: voltaVisibility + - more cello-suite-ii fixes: + * nice repeats + * removed all beams ifo auto-beamer + - bf's: autobeam + - junked dur2real; beamAutoEndx now as rational string: "1/2" + +pl 23.hwn2 + - _8 clef + - junked #args symtable def. + - junked Text_item. + - moved Bar assembling into LilyPond + - junked symtables reads + - Lookup cleanups + - junked Symtable from init/table* + +pl 23.hwn1 + - revamped Scarlatti K3-L378 + - some more doco + - use interning/SCM for Scopes + - hanging on now works for breakables too. + +pl 23.jcn6 + - chord fixes; notemode chord syntax changed: @c@ @c-7@ + - fixed cello-suite ii + - bf's: auto-beamer; but nasty bug remains: input/bug/auto-beam.ly + - bf: extender + - (bit ugly) fix for lyric-chords + - fixed repeats (dankjewel lieverd) + * input/twinkle.ly + * input/star*.ly + +pl 23.jcn3 + - succussfully removed []s from wtk1-fugue2.ly + - bf + smarter autobeamer + +pl 23.jcn2 + - mi2mu: d-minor: des->cis, g-minor ges->fis + +pl 23.mb1 - bf: Position and possible SIGSEGV in Mark_engraver - Added padding support in G_staff_side_item - bf: Correct direction of textual scripts. - bf, lookup.cc: Fewer warnings about missing text styles. Same units used in all .afm files. +pl 22.jcn5 + - auto-beaming v0: input/test/auto-beam.ly + + + +*********** + pl 22.jcn4 - bf's: repeat-engraver; \bar "|:", ":|" now deprecated for repeats - bf: :|, |: diff --git a/TODO b/TODO index 0b99e57ba4..30d5c972c8 100644 --- a/TODO +++ b/TODO @@ -7,31 +7,42 @@ done, or is an idea that I want to think about Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr/urg +************** +I also found a few bugs: -* check out PS points vs. LilyPond points (PS = 1/72 inch, LilyPond=1/72.27) +* The examples in input/test/bar-scripts.ly and score-bar-scripts.ly + don't work. The problem seems to be that you can't define a + a score identifier and then use it in the \score block. * Instrument names in the margin. Example: input/test/hara-kiri.ly. The text should of course be to the left of the staff lines. +************** + + * check widths of TFM, something's wrong here. + + * hang Item on Spanner + + * junk Text_def, use G_text_item in stead. + + * remove Interval dim_ from Dimension_cache and rename the struct. + + * do --safe for PS output? + + * staff_margin (with a partial measure.) + + * fix "I've been drinking too much" + + * add scripts to bars eg. |^"bla" + + * fix Staff_margin_engraver. + + * fix pletvisibility properties: + - bracket on/off/no-bracket-when-beam + - num on/off/no-num-when-beam + + * fix: standchen. -* There is a bug in pl 22. Try /input/test/slurs.ly and - you will find '#.#' instead of real numbers at some - places in the empedded ps code. - -* (Annoying but not a bug:) Slurs that are broken at line - breaks often extend too far into the margin, both to the - left and to the right. How do you adjust it? - -* SkipBars=0 doesn't work. My score contains lots of - multibar rests, which should be written out bar by bar - in the score (where the 'harakiri' mechanism doesn't - remove full staff lines that only contain rests). - In the parts, the multibar rests should be split - by the rehearsal marks I've included every here and - there. - In short, I want the multibar rests to work as they - used to do before pl 20 but preferably with a nice - centered rest symbol. * junk backlinks? * junk text{sharp,flat,etc} @@ -42,21 +53,6 @@ grep for TODO and ugh/ugr/urg * decimal point in \paper {} - > I have changed Mark_engraver to use the G_... classes. - > My implementation has the following shortcomings at the - > moment. - > - > - markScriptPadding is not supported, since G_staff_side_item does not - > support padding. - > - > - markBreakPriority is not supported. - > - > - Mostly, you want the marks aligned with the bar lines. I don't - > really understand how to implement that feature. - > - > - You get lots of warnings about missing 'number' and 'Large' - - *{ \voiceone [g''8 fis'' e''] d''4 |} and=20 { \voicetwo d'4 d'2.*2/3 } spacing @@ -66,31 +62,21 @@ grep for TODO and ugh/ugr/urg * sharp /flat on trills (in MIDI ??) * scm-ify \property values. -- The direction of textual scripts ('^' or '_') is ignored. - * move class Lookup {} into scm - - * read tfms too. - * update mi2mu for lilypond 1.1 + * move class Lookup {} into scm BUGS: + * collisions/voices \voiceone \voicetwo are broken; see input/praeludium-fuga-E.ly mutopia/J.S.Bach/wtk1-fugue2.ly - * fix: standchen. - - * fix: cello suites - - * fix: text on rests: rediculous dims - - * fix extender + * fix: text on rests: rediculous dims - * fix fingering 'a-5': font direction broken *again* - - * fix braces - - * ly2dvi barfs on linewidth = -1. + * ly2dvi + - barfs on linewidth = -1. + - bottomnote for ly2dvi + - deps for ly2dvi * fix midi output: - default duration? duration must be not entered @@ -107,9 +93,6 @@ BUGS: * fix height of / collisions with lyrics (chords), see input/test/vertical-text.ly; input/test/repeat.ly - * repeat/volta: - - one volta spanner per score - * latex bla.tex broken (titles / \lilyfooter stuff?) * check/set minimum slur/tie length @@ -172,11 +155,11 @@ STUFF * Align_element::padding ? - * uniformise property names. - - * ydirection <-> yDirection - - * typo checks on property names? + * uniformise property names... + - ydirection <-> yDirection + - rather allow '_' in identifiers first (i.e. junk ^ and _), + and do y_direction? + - typo checks on property names? * use streambufs and iostream to provide IO handling for TeX stream, mudela stream, data-file. @@ -205,8 +188,6 @@ STUFF * mi2mu empty staffs. - * midi_instrument -> midiInstrument - * horizontal centering of dynamics * \font\fontA=feta20.afm (.afm?) @@ -256,7 +237,7 @@ ydirection and hshift preset - NEWS: ... Musical_pitch (analogous to Duration and Rhythmic_req) think about, analogous to pitch: * { a4 a16 } c <-- duration of c? - * c <-- duration of c? + * < a4 b8 > c <-- duration of c? * \tempo 4. = 90; @@ -270,8 +251,6 @@ ydirection and hshift preset * add a Duration_convert member to Duration_iter to set parameters. Junk global duration settings. - - * deps for ly2dvi * minimum length second part broken tie @@ -307,16 +286,13 @@ ydirection and hshift preset * check for groff / troff/ nroff et * more intelligent file searching - - make LilyPond RPM fully relocatable - * nicen examples: - - break-up heavily-nested score blocks + * make LilyPond RPM fully relocatable * disable spaces in TeX stuff * handle ^C for tmp/file creation. - * dots & rest collisions. * documentation @@ -346,51 +322,46 @@ ydirection and hshift preset * integrate midi-elts from mi2mu and lily? - * score-bar-scripts - FMR: Free memory read: - * This is occurring while in: - Bar_column::do_substitute_dependency(Score_element*,Score_element*) [bar - -column.cc:29] - Score_element::unlink() [score-elem.cc:383] - Paper_score::set_breaking(const Array&) [p-score.cc: - 150] - Paper_score::calc_breaking() [p-score.cc:189] - Paper_score::process() [p-score.cc:203] - Score::run_translator(Music_output_def*) [score.cc:117] - * Reading 4 bytes from 0x65d3a0 in the heap. - * Address 0x65d3a0 is 160 bytes into a freed block at 0x65d300 of 208 bytes. - * This block was allocated from: - malloc [rtlib.o] - __builtin_new [libgcc.a] - Span_score_bar::clone()const [span-score-bar.hh:20] - Item::copy_breakable_items() [item.cc:69] - Item::do_breakable_col_processing() [item.cc:89] - Score_element::calcalute_dependencies(int,int,void(Score_element::*)()*) - [score-elem.cc:171] - * There have been 22 frees since this block was freed from: - free [rtlib.o] - __builtin_delete [libgcc.a] - Span_score_bar::~Span_score_bar() [span-score-bar.hh:18] - Paper_score::set_breaking(const Array&) [p-score.cc: - 156] - Paper_score::calc_breaking() [p-score.cc:189] - Paper_score::process() [p-score.cc:203] - Postprocessing elements... - TeX output to score-bar-scripts.tex... - 3RD PARTY BUGS: +**************** +/* +ICE +*/ +signature S { + int foo (); +}; - * make GCC warn about ctor that leaves member vars uninitialised. +signature V { + S * s(); +}; - * redhat (v?) graphical install bomb-out? - * GNU diff 2.7: diff -rN does not see a new directory with empty file +V*v(); +f () +{ + return v( )->foo (); +} + +/* + + egcs-1.1 - * GNU patch 2.1: if patch chokes on a - hunk, or on allegedly unsorted hunks in a diff, it may stop - without a trace of failure (create .rej file, print error or - dump core) and just ignore any further diffs. +foo.cc: In function `int f()': +foo.cc:6: label `b' used but not defined +*/ +void +f () +{ + bool b; + if (b && && b) + ; +} +*************** + + * make GCC warn about ctor that leaves member vars uninitialised. + + * GNU diff 2.7: diff -rN does not see a new directory with empty file * glibc 2.0: @@ -399,8 +370,6 @@ ydirection and hshift preset 3RD PARTY PROJECTS: - * GNU indent: handle C++ - * GNU patch - 'double-fix' mode: ignore identical fix, rather than suggest to revert patch direction when (more or less? exactly) the same @@ -507,8 +476,6 @@ PROJECTS - quiet/ignore-version options - logfile output - * piano staff - * elaborate Staff_side baseclass: - scripts - text @@ -519,7 +486,6 @@ PROJECTS - PS lines to .eps files - write custom prolog - * Output an output format independent (ofi) typeset file; and make ofi2 TeX, MusiXTex, Display PostScript, PostScript, Ascii... interpreters. (difficult) @@ -571,8 +537,6 @@ PROJECTS - saving them - specify number of lines - * markers - INPUTLANGUAGE * c4 4 4 4 for c4 c4 c4 c4? @@ -659,13 +623,6 @@ IDEAS * move MIDI stuff (including Quantization) to a ANSI C libmidi library. - * use an embedded language: Python, Scheme - for: - - Score_elems - - Translators - - * y -dims in internote? Staff-space? X-dimensions? - * Spacing_request for manually adjusting spacing * caching breakpoints diff --git a/VERSION b/VERSION index 3559b6d923..56d25e8daf 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=23 -MY_PATCH_LEVEL=ms2 +PATCH_LEVEL=24 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py index 88eaf5d612..4d4b505197 100644 --- a/buildscripts/mf-to-table.py +++ b/buildscripts/mf-to-table.py @@ -112,7 +112,7 @@ class Indentable_file(File): class Afm_file (File): def print_f_dimen(self, f): - f = f + f = f * 1000 dimstr = '%.2f' % f diff --git a/buildscripts/set-lily.sh b/buildscripts/set-lily.sh index 6e698cdc85..f819163aa5 100755 --- a/buildscripts/set-lily.sh +++ b/buildscripts/set-lily.sh @@ -6,6 +6,7 @@ PACKAGE_NAME=LilyPond export PACKAGE_NAME prefix=$HOME/usr sources=$prefix/src + # # . ./stepmake/bin/package-zet.sh @@ -47,9 +48,8 @@ ln -sf $LILYPOND_SOURCEDIR/scripts/out/mudela-book $prefix/bin/mudela-book chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs ln -sf $LILYPOND_SOURCEDIR/mf/out/ afm -mkdir -p $prefix/share/lilypond -ln -sf $LILYPOND_SOURCEDIR/ $prefix/share/lilypond -rm $prefix/share/lilypond +mkdir -p $prefix/share/ +ln -sf $prefix/lilypond/ $sources/lilypond if [ -f ../.gdbinit ]; then diff --git a/dstreamrc b/dstreamrc index c7db1bd6ce..a13bedba99 100644 --- a/dstreamrc +++ b/dstreamrc @@ -3,7 +3,7 @@ # the debugging. # class name silence? -Dstream 1 +Dstream 0 # yydebug InitParser 1 @@ -27,14 +27,20 @@ Vector 1 # lily Absolute_dynamic_req 1 Atom 1 -Axis_group_administration 0 +Axis_group_administration 1 +Axis_group_spanner 1 +Auto_beam_engraver 0 +Audio_column 1 +Audio_element 1 +Audio_item 1 +Audio_note 1 Bar 1 Bar_req 1 -Beam 0 +Beam 1 Bezier 1 Bezier_bow 1 Bezier_bow_controls 1 -Bezier_controls 0 +Bezier_controls 1 Bow 1 Change_iterator 1 Change_translator 1 @@ -48,13 +54,14 @@ Collision 1 Column_info 1 Column_rod 1 Duration_identifier 1 -Engraver 0 -Engraver_group_engraver 0 +Engraver 1 +Engraver_group_engraver 1 General_script_def 1 Graphical_element 1 +Graphical_axis_group 1 Group_change_req 1 Guile 1 -Head_column 0 +Head_column 1 Horizontal_align_item 1 Horizontal_group_item 1 Idealspacing 1 @@ -62,40 +69,42 @@ Identifier 1 Ineq_constrained_qp 1 Input_translator 1 int_identifier 1 -Item 0 +Item 1 Key_item 1 Lookup 1 Line_spacer 1 Melodic_req 1 Midi_def 1 -Midistrings 0 +Midistrings 1 Mixed_qp 1 Music 1 Musical_pitch 1 Music_iterator 1 Music_output_def 1 -Note_column 0 +Note_column 1 Note_head 1 Note_performer 1 Note_req 1 -Paper_column 0 +Paper_column 1 Paper_score 1 Paper_def 1 +Partial_measure_req 1 +Performance 1 Performer 1 Performer_group_performer 1 Real_identifier 1 Request 1 Request_iterator 1 Rest_collision 1 -Rest_collision_engraver 0 +Rest_collision_engraver 1 Rest_req 1 -Rhythmic_head 0 +Rhythmic_head 1 Rhythmic_req 1 Scope 1 -Score 0 -Score_column 0 -Score_element 0 -Score_engraver 0 +Score 1 +Score_column 1 +Score_element 1 +Score_engraver 1 Score_performer 1 Script_column 1 Script_def 1 @@ -112,8 +121,10 @@ Skip_req 1 Staff_commands 1 Staff_symbol 1 Stem 1 -Stem_info 0 +Stem_info 1 Stem_req 1 +String_identifier 1 +Relative_octave_music 1 Symtable 1 Symtables 1 @@ -121,9 +132,10 @@ Text_def 1 Text_item 1 Text_req 1 Time_description 1 -Translation_property 0 -Translator 0 -Translator_group 0 +Time_signature_change_req 1 +Translation_property 1 +Translator 1 +Translator_group 1 Voice 1 Voice_iterator 1 Word_wrap 1 diff --git a/flower/hash.cc b/flower/hash.cc index b541681e87..c2fd954a8f 100644 --- a/flower/hash.cc +++ b/flower/hash.cc @@ -19,7 +19,7 @@ unsigned long prime_list (int idx) return my_prime_list [idx]; } -unsigned int hash (String s) +unsigned int string_hash (String s) { const char* str = s.ch_C (); unsigned int result = 0; @@ -37,7 +37,9 @@ unsigned int hash (unsigned int i) return i; } -unsigned int hash (int i) +unsigned int int_hash (int i) { return (unsigned) i; } + +unsigned int hash ( ); diff --git a/flower/include/dictionary-iter.hh b/flower/include/dictionary-iter.hh index 33531e584c..55176ae9f0 100644 --- a/flower/include/dictionary-iter.hh +++ b/flower/include/dictionary-iter.hh @@ -11,51 +11,8 @@ #define DICTIONARY_ITER_HH #include "dictionary.hh" +#include "hash-table-iter.hh" -template -class Hash_table_iter -{ - Hash_table *dict_l_; - int i; -public: - Hash_table_iter(Hash_table const &dict) - { - i =0; - dict_l_ =(Hash_table *) & dict; - next_used (); - } - - bool ok () - { - return i < dict_l_->fixed_p_->dict_arr_.size (); - } - - void next_used () - { - while (ok () && dict_l_->fixed_p_->dict_arr_[i].free_b_) - { - i ++; - } - } - void operator ++(int) - { - i++; - next_used (); - } - - K key () - { - return dict_l_->fixed_p_->dict_arr_[i].key_; - } - V val () - { - return dict_l_->fixed_p_->dict_arr_[i].value_; - } - V &val_ref () - { - return dict_l_->fixed_p_->dict_arr_[i].value_; - } -}; template class Dictionary_iter : public Hash_table_iter diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh index c9b5775f1b..ceaaa496b3 100644 --- a/flower/include/dictionary.hh +++ b/flower/include/dictionary.hh @@ -13,27 +13,11 @@ #include "string.hh" #include "array.hh" -unsigned long prime_list (int idx); -template -struct Hash_table_entry -{ - K key_; - V value_; - bool free_b_; +#include "hash-table.hh" - Hash_table_entry() { - free_b_ = true; - } - Hash_table_entry (K s, V v) - { - key_ = s; - value_ = v; - free_b_ = false; - } -}; -unsigned int hash (String); -unsigned int hash (int); +unsigned int string_hash (String); + template struct Dict_initialiser @@ -42,188 +26,18 @@ struct Dict_initialiser V value_; }; -/** - A hash table of prime size. - - We use quadratic probing. - */ -template -class Fixed_size_hash_table -{ -public: - Array > dict_arr_; - int size_idx_; - Fixed_size_hash_table (int size_idx) - { - size_idx_ = size_idx; - int sz = prime_list(size_idx_); - dict_arr_.set_size (sz); - } - - /// find #s#, or find first empty entry corresponding to #s# - int lookup (K s) - { - int sz =dict_arr_.size (); - int i = hash (s) % sz; - int j = 0; - while (j <= sz/2) { - if (dict_arr_[i].free_b_) - return i; - - if (dict_arr_[i].key_ == s) - return i; - - j++; - i = (i + j*j) % sz; - } - - return -1; - } - - /// remove #s# from the hash table. - V remove (K s) - { - assert (false); // Untested routine. - int sz =dict_arr_.size (); - int i = hash (s) % sz; - int j = 0; - V retval; - while (j <= sz/2 && dict_arr_[i].key_ != s) - { - assert (!dict_arr_[i].free_b_); - - - j ++; - i = (i + j*j) % sz; - } - - j++; - int nexti = (i + j*j) % sz; - - while (j <= sz/2 && !dict_arr_[i].free_b_) - { - dict_arr_[i] = dict_arr_[nexti]; - j++; - i = nexti; - nexti = (nexti + j*j)%sz; - } - - return retval; - } -}; - -/** - Hash table with sliding sizes. - */ -template -class Hash_table -{ - Fixed_size_hash_table * fixed_p_; - - /// set size to next prime, and copy contents - void enlarge () - { - Fixed_size_hash_table *f = new Fixed_size_hash_table (fixed_p_->size_idx_ +1); - for (int i=0; i < fixed_p_->dict_arr_.size(); i++) - { - if (fixed_p_->dict_arr_[i].free_b_) - continue; - - K nm (fixed_p_->dict_arr_[i].key_); - int nl = f->lookup (nm); - - f->dict_arr_[nl] = Hash_table_entry (nm, fixed_p_->dict_arr_[i].value_); - } - delete fixed_p_; - fixed_p_ = f; - } -public: - Hash_table () - { - fixed_p_ = new Fixed_size_hash_table (0); - } - ~Hash_table () - { - delete fixed_p_; - } - void operator = (Hash_table const &src) - { - if (&src == this) - return; - - delete fixed_p_; - fixed_p_ = new Fixed_size_hash_table (*src.fixed_p_); - } - Hash_table (Hash_table const &src) - { - fixed_p_ = new Fixed_size_hash_table (*src.fixed_p_); - } - - void clear () - { - int i= fixed_p_->size_idx_; - delete fixed_p_; - fixed_p_ = new Fixed_size_hash_table (i); - } - bool elem_b (K s) const - { - int l = fixed_p_->lookup (s); - - return (l >= 0 && !fixed_p_->dict_arr_[l].free_b_) ; - } - - /** - Find and return element. If #s# is not in the table, create an entry in the table, and init - */ - V& elem (K s) - { - int l; - while ((l= fixed_p_->lookup (s)) <0) - { - enlarge (); - } - - - fixed_p_->dict_arr_[l].free_b_ = false; - fixed_p_->dict_arr_[l].key_ = s; - return fixed_p_->dict_arr_[l].value_; - } - V elem (K s) const - { - return const_elem (s); - } - V const_elem (K k) const - { - V retval; - if (elem_b (k)) - retval = ((Hash_table*)this)->elem (k); - return retval; - } - V& operator [] (K k) - { - return elem (k); - } - - V operator [] (K k) const - { - return const_elem (k); - } - - V remove (K s) - { - return fixed_p_->remove (s); - } - friend class Hash_table_iter; -}; template class Dictionary : public Hash_table { public: Dictionary () - {} + { + hash_func_ = string_hash; + } Dictionary (Dict_initialiser *p) { + hash_func_ = string_hash; for (Dict_initialiser *q = p; q->key_; q++) elem (q->key_) = q->value_; diff --git a/flower/include/hash-table-iter.hh b/flower/include/hash-table-iter.hh new file mode 100644 index 0000000000..61b4a34973 --- /dev/null +++ b/flower/include/hash-table-iter.hh @@ -0,0 +1,61 @@ +/* + hash-table-iter.hh -- declare Hash_table_iter + + source file of the Flower Library + + (c) 1999 Han-Wen Nienhuys + + */ + +#ifndef HASH_TABLE_ITER_HH +#define HASH_TABLE_ITER_HH +#include "hash-table.hh" + +template +class Hash_table_iter +{ + Hash_table *dict_l_; + int i; +public: + Hash_table_iter(Hash_table const &dict) + { + i = 0; + dict_l_ =(Hash_table *) & dict; + next_used (); + } + + bool ok () const + { + return i < dict_l_->fixed_p_->dict_arr_.size (); + } + + void next_used () + { + while (ok () && dict_l_->fixed_p_->dict_arr_[i].free_b_) + { + i ++; + } + } + void operator ++(int) + { + i++; + next_used (); + } + + K key () const + { + return dict_l_->fixed_p_->dict_arr_[i].key_; + } + V val () const + { + return dict_l_->fixed_p_->dict_arr_[i].value_; + } + V &val_ref () + { + return dict_l_->fixed_p_->dict_arr_[i].value_; + } +}; + + +#endif /* HASH_TABLE_ITER_HH */ + diff --git a/flower/include/hash-table.hh b/flower/include/hash-table.hh new file mode 100644 index 0000000000..ef497f1c75 --- /dev/null +++ b/flower/include/hash-table.hh @@ -0,0 +1,215 @@ +/* + hash-table.hh -- declare Hash_table_entry, Hash_table + + source file of the Flower Library + + (c) 1999 Han-Wen Nienhuys + + */ + +#ifndef HASH_TABLE_HH +#define HASH_TABLE_HH + +unsigned int int_hash (int); +unsigned long prime_list (int idx); +template +struct Hash_table_entry +{ + K key_; + V value_; + bool free_b_; + + Hash_table_entry() { + free_b_ = true; + } + Hash_table_entry (K s, V v) + { + key_ = s; + value_ = v; + free_b_ = false; + } +}; + +/** + A hash table of prime size. + + We use quadratic probing. + */ +template +class Fixed_size_hash_table +{ +public: + Array > dict_arr_; + int size_idx_; + Fixed_size_hash_table (int size_idx) + { + size_idx_ = size_idx; + int sz = prime_list(size_idx_); + dict_arr_.set_size (sz); + } + + /// find #s#, or find first empty entry corresponding to #s# + int lookup (K s, unsigned int initial_hash) + { + int sz =dict_arr_.size (); + int i = initial_hash % sz; + int j = 0; + while (j <= sz/2) { + if (dict_arr_[i].free_b_) + return i; + + if (dict_arr_[i].key_ == s) + return i; + + j++; + i = (i + j*j) % sz; + } + + return -1; + } + + /// remove #s# from the hash table. + V remove (K s, unsigned int initial_hash) + { + assert (false); // Untested routine. + int sz =dict_arr_.size (); + int i = initial_hash % sz; + int j = 0; + V retval; + while (j <= sz/2 && dict_arr_[i].key_ != s) + { + assert (!dict_arr_[i].free_b_); + + + j ++; + i = (i + j*j) % sz; + } + + j++; + int nexti = (i + j*j) % sz; + + while (j <= sz/2 && !dict_arr_[i].free_b_) + { + dict_arr_[i] = dict_arr_[nexti]; + j++; + i = nexti; + nexti = (nexti + j*j)%sz; + } + + return retval; + } +}; + +/** + Hash table with sliding sizes. + */ +template +class Hash_table +{ + Fixed_size_hash_table * fixed_p_; + /// set size to next prime, and copy contents + void enlarge () + { + Fixed_size_hash_table *f = new Fixed_size_hash_table (fixed_p_->size_idx_ +1); + + for (int i=0; i < fixed_p_->dict_arr_.size(); i++) + { + if (fixed_p_->dict_arr_[i].free_b_) + continue; + + K nm (fixed_p_->dict_arr_[i].key_); + unsigned int h = (*hash_func_)(nm); + int nl = f->lookup (nm, h); + + f->dict_arr_[nl] = Hash_table_entry (nm, fixed_p_->dict_arr_[i].value_); + } + delete fixed_p_; + fixed_p_ = f; + } +public: + Hash_table () + { + hash_func_ = 0; + fixed_p_ = new Fixed_size_hash_table (0); + } + ~Hash_table () + { + delete fixed_p_; + } + void operator = (Hash_table const &src) + { + if (&src == this) + return; + + delete fixed_p_; + fixed_p_ = new Fixed_size_hash_table (*src.fixed_p_); + hash_func_ = src.hash_func_; + } + Hash_table (Hash_table const &src) + { + fixed_p_ = new Fixed_size_hash_table (*src.fixed_p_); + hash_func_ = src.hash_func_; + } + + void clear () + { + int i= fixed_p_->size_idx_; + delete fixed_p_; + fixed_p_ = new Fixed_size_hash_table (i); + } + bool elem_b (K s) const + { + int l = fixed_p_->lookup (s, (*hash_func_)(s)); + + return (l >= 0 && !fixed_p_->dict_arr_[l].free_b_) ; + } + + /** + Find and return element. If #s# is not in the table, create an entry in the table, and init + */ + V& elem (K s) + { + int l; + unsigned int h = (*hash_func_)(s); + while ((l= fixed_p_->lookup (s,h)) <0) + { + enlarge (); + } + + fixed_p_->dict_arr_[l].free_b_ = false; + fixed_p_->dict_arr_[l].key_ = s; + return fixed_p_->dict_arr_[l].value_; + } + V elem (K s) const + { + return const_elem (s); + } + V const_elem (K k) const + { + V retval; + if (elem_b (k)) + retval = ((Hash_table*)this)->elem (k); + return retval; + } + V& operator [] (K k) + { + return elem (k); + } + + V operator [] (K k) const + { + return const_elem (k); + } + + V remove (K s) + { + return fixed_p_->remove (s, (*hash_func_)(s)); + } + friend class Hash_table_iter; +public: + unsigned int (*hash_func_)(K); +}; + + +#endif /* HASH_TABLE_HH */ + diff --git a/flower/rational.cc b/flower/rational.cc index cf99657acb..e99402dbb8 100644 --- a/flower/rational.cc +++ b/flower/rational.cc @@ -179,16 +179,21 @@ Rational::Rational(double x) const int FACT = 1 << 20; /* - FIXME + Thanks to Afie for this too simple idea. + + do not blindly substitute by libg++ code, since that uses + arbitrary-size integers. The rationals would overflow too + easily. + */ - SHOULD TEST THIS - - suck me gently with a vacuum cleaner. Thanks to Afie for this wierd idea. - */ num_ = (unsigned int) (mantissa * FACT); den_ = (unsigned int) FACT; + normalise (); + if (expt < 0) + den_ <<= -expt; + else + num_ <<= expt; normalise (); - num_ <<= expt; } else { diff --git a/init/GNUmakefile b/init/GNUmakefile deleted file mode 100644 index 6513297576..0000000000 --- a/init/GNUmakefile +++ /dev/null @@ -1,15 +0,0 @@ -# init/Makefile - -depth = .. - -INI_FILES = $(FLY_FILES) $(LY_FILES) -EXTRA_DIST_FILES = $(SCM_FILES) - -INSTALLATION_DIR=$(datadir)/ly/ -INSTALLATION_FILES=$(INI_FILES) - -STEPMAKE_TEMPLATES=install -LOCALSTEPMAKE_TEMPLATES=mutopia - -include $(depth)/make/stepmake.make - diff --git a/init/a4.ly b/init/a4.ly deleted file mode 100644 index e42ee40984..0000000000 --- a/init/a4.ly +++ /dev/null @@ -1,4 +0,0 @@ -% a4.ly - -hsize = 210.0 \mm; -vsize = 296.9 \mm; diff --git a/init/accordion-defs.ly b/init/accordion-defs.ly deleted file mode 100644 index 12c4723467..0000000000 --- a/init/accordion-defs.ly +++ /dev/null @@ -1,55 +0,0 @@ -% Symbols needed to print accordion music -% -% 2' = T -% 4' = F -% 8' = E -% 16' = S -% - -accDiscant = \script{ "accDiscant" 0 0 1 0 0 } -accDiscantF = \script{ "accDiscantF" 0 0 1 0 0 } -accDiscantE = \script{ "accDiscantE" 0 0 1 0 0 } -accDiscantEh = \script{ "accDiscantEh" 0 0 1 0 0 } -accDiscantFE = \script{ "accDiscantFE" 0 0 1 0 0 } -accDiscantFEh = \script{ "accDiscantFEh" 0 0 1 0 0 } -accDiscantEE = \script{ "accDiscantEE" 0 0 1 0 0 } -accDiscantFEE = \script{ "accDiscantFEE" 0 0 1 0 0 } -accDiscantEEE = \script{ "accDiscantEEE" 0 0 1 0 0 } -accDiscantFEEE = \script{ "accDiscantFEEE" 0 0 1 0 0 } -accDiscantS = \script{ "accDiscantS" 0 0 1 0 0 } -accDiscantFS = \script{ "accDiscantFS" 0 0 1 0 0 } -accDiscantES = \script{ "accDiscantES" 0 0 1 0 0 } -accDiscantEhS = \script{ "accDiscantEhS" 0 0 1 0 0 } -accDiscantFES = \script{ "accDiscantFES" 0 0 1 0 0 } -accDiscantFEhS = \script{ "accDiscantFEhS" 0 0 1 0 0 } -accDiscantEES = \script{ "accDiscantEES" 0 0 1 0 0 } -accDiscantFEES = \script{ "accDiscantFEES" 0 0 1 0 0 } -accDiscantEEES = \script{ "accDiscantEEES" 0 0 1 0 0 } -accDiscantFEEES = \script{ "accDiscantFEEES" 0 0 1 0 0 } -accDiscantSS = \script{ "accDiscantSS" 0 0 1 0 0 } -accDiscantESS = \script{ "accDiscantESS" 0 0 1 0 0 } -accDiscantEESS = \script{ "accDiscantEESS" 0 0 1 0 0 } -accDiscantEEESS = \script{ "accDiscantEEESS" 0 0 1 0 0 } - -accFreebass = \script{ "accFreebass" 0 0 1 0 0 } -accFreebassF = \script{ "accFreebassF" 0 0 1 0 0 } -accFreebassE = \script{ "accFreebassE" 0 0 1 0 0 } -accFreebassFE = \script{ "accFreebassFE" 0 0 1 0 0 } - -accBayanbass = \script{ "accBayanbass" 0 0 1 0 0 } -accBayanbassT = \script{ "accBayanbassT" 0 0 1 0 0 } -accBayanbassE = \script{ "accBayanbassE" 0 0 1 0 0 } -accBayanbassTE = \script{ "accBayanbassTE" 0 0 1 0 0 } -accBayanbassEE = \script{ "accBayanbassEE" 0 0 1 0 0 } -accBayanbassTEE = \script{ "accBayanbassTEE" 0 0 1 0 0 } - -accStdbass = \script{ "accStdbass" 0 0 1 0 0 } -accStdbassTp = \script{ "accStdbassTp" 0 0 1 0 0 } -accStdbassT = \script{ "accStdbassT" 0 0 1 0 0 } -accStdbassBp = \script{ "accStdbassBp" 0 0 1 0 0 } -accStdbassM = \script{ "accStdbassM" 0 0 1 0 0 } - -accSB = \script{ "accSB" 0 0 1 0 0 } -accBB = \script{ "accBB" 0 0 1 0 0 } -accOldEE = \script{ "accOldEE" 0 0 1 0 0 } -accOldEES = \script{ "accOldEES" 0 0 1 0 0 } diff --git a/init/book-fragment.ly b/init/book-fragment.ly deleted file mode 100644 index 46fd731997..0000000000 --- a/init/book-fragment.ly +++ /dev/null @@ -1,20 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly" - -\include "paper16.ly" - \paper { \paper_sixteen - linewidth = -1.\cm; - castingalgorithm = \Wordwrap; - "unusedentry" = "}\\def\\nolilyfooter{"; - } - -\score { - \notes { - \maininput - } -\paper{} -} diff --git a/init/book-init.ly b/init/book-init.ly deleted file mode 100644 index 7cb2e6b12b..0000000000 --- a/init/book-init.ly +++ /dev/null @@ -1,14 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly"; -\include "paper16.ly" - - \paper{ - \paper_sixteen -} - - -\maininput diff --git a/init/catalan.ly b/init/catalan.ly deleted file mode 100644 index 99ae0dc723..0000000000 --- a/init/catalan.ly +++ /dev/null @@ -1,73 +0,0 @@ -%{ - - Common catalan names for notes. "b" means flat (bemoll), "d" means sharp (diesi). - Also "s" is included for sharp (sostingut). Both "diesi" and "sostingut" are approved - by "Diccionari de la Llengua Catalana" from "Institut d'Estudis Catalans". - - Adapted from italiano.ly. - - English: a b c d e f g - Catalan: la si do re mi fa sol - - For spanish naming just use the sharp sign "s" (sostenido) instead of "s" -(sostenido) . -%} - -% contributed by Jaume Obrador - -\notenames { - dobb = \musicalpitch { -1 0 -2 } - dob = \musicalpitch { -1 0 -1 } - do = \musicalpitch { -1 0 0 } - dod = \musicalpitch { -1 0 1 } - dodd = \musicalpitch { -1 0 2 } - rebb = \musicalpitch { -1 1 -2 } - reb = \musicalpitch { -1 1 -1 } - re = \musicalpitch { -1 1 0 } - red = \musicalpitch { -1 1 1 } - redd = \musicalpitch { -1 1 2 } - mibb = \musicalpitch { -1 2 -2 } - mib = \musicalpitch { -1 2 -1 } - mi = \musicalpitch { -1 2 0 } - mid = \musicalpitch { -1 2 1 } - midd = \musicalpitch { -1 2 2 } - fabb = \musicalpitch { -1 3 -2 } - fab = \musicalpitch { -1 3 -1 } - fa = \musicalpitch { -1 3 0 } - fad = \musicalpitch { -1 3 1 } - fadd = \musicalpitch { -1 3 2 } - solbb = \musicalpitch { -1 4 -2 } - solb = \musicalpitch { -1 4 -1 } - sol = \musicalpitch { -1 4 0 } - sold = \musicalpitch { -1 4 1 } - soldd = \musicalpitch { -1 4 2 } - labb = \musicalpitch { -1 5 -2 } - lab = \musicalpitch { -1 5 -1 } - la = \musicalpitch { -1 5 0 } - lad = \musicalpitch { -1 5 1 } - ladd = \musicalpitch { -1 5 2 } - sibb = \musicalpitch { -1 6 -2 } - sib = \musicalpitch { -1 6 -1 } - si = \musicalpitch { -1 6 0 } - sid = \musicalpitch { -1 6 1 } - sidd = \musicalpitch { -1 6 2 } - -% For using "sostingut" notation, which is also correct - - dos = \musicalpitch { -1 0 1 } - doss = \musicalpitch { -1 0 2 } - res = \musicalpitch { -1 1 1 } - ress = \musicalpitch { -1 1 2 } - mis = \musicalpitch { -1 2 1 } - miss = \musicalpitch { -1 2 2 } - fas = \musicalpitch { -1 3 1 } - fass = \musicalpitch { -1 3 2 } - sols = \musicalpitch { -1 4 1 } - solss = \musicalpitch { -1 4 2 } - las = \musicalpitch { -1 5 1 } - lass = \musicalpitch { -1 5 2 } - sis = \musicalpitch { -1 6 1 } - siss = \musicalpitch { -1 6 2 } -} - - diff --git a/init/center-fragment.ly b/init/center-fragment.ly deleted file mode 100644 index 72be0acd36..0000000000 --- a/init/center-fragment.ly +++ /dev/null @@ -1,25 +0,0 @@ -% Toplevel initialisation file. - - -\version "1.0.14"; - - -\include "declarations.ly" - -\include "paper16.ly"; - - \paper { - \paper_sixteen - linewidth = -1.0\cm; - castingalgorithm = \Wordwrap; - "unusedentry" = "}\\def\\nolilyfooter{"; -} - - -\score { -% \notes\relative c { - \notes { - \maininput - } -\paper{} -} diff --git a/init/center.ly b/init/center.ly deleted file mode 100644 index 500c25aad5..0000000000 --- a/init/center.ly +++ /dev/null @@ -1,15 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly" -\include "paper16.ly" - - \paper { - \paper_sixteen; -% linewidth = 7.\cm; - linewidth = 11.\cm; -} - -\maininput diff --git a/init/chord-modifiers.ly b/init/chord-modifiers.ly deleted file mode 100644 index 48cc2f09f4..0000000000 --- a/init/chord-modifiers.ly +++ /dev/null @@ -1,15 +0,0 @@ -%{ - chord modifiers -%} - -\chordmodifiers { - m = \musicalpitch { 0 2 -1 } - min = \musicalpitch { 0 2 -1 } - aug = \musicalpitch { 0 4 1 } - dim = \musicalpitch { 0 4 -1 } - % urg, not actually a chord-modifier, but it works - % c7 -> , c 7+ -> c b - maj = \musicalpitch { 0 6 1 } - % sus4 should delete 2 too... - sus = \musicalpitch { 0 3 0 } -} diff --git a/init/declarations.ly b/init/declarations.ly deleted file mode 100644 index 69b33ac2ce..0000000000 --- a/init/declarations.ly +++ /dev/null @@ -1,45 +0,0 @@ - - -breve = \duration { -1 0 } -longa = \duration { -2 0 } - -\include "dynamic.ly" -\include "nederlands.ly" % dutch -\include "chord-modifiers.ly" -\include "script.ly" - - -Gourlay = 1.0 -Wordwrap = 0.0 - -papersize = "a4" - -\include "paper20.ly" - -\paper{ - \paper_twenty -} - -% ugh -\include "midi.ly" - -% declarations for standard directions -left = -1 -right = 1 -up = 1 -down = -1 -% zillie spellink? -center=0 - -break = { \penalty = 10000; } -nobreak = { \penalty = -10000; } - -major = 0 -minor = 3 - -\include "property.ly" - -\scmfile "lily.scm"; - -% music = "\melodic\relative c" - diff --git a/init/deutsch.ly b/init/deutsch.ly deleted file mode 100644 index ef247f87f3..0000000000 --- a/init/deutsch.ly +++ /dev/null @@ -1,93 +0,0 @@ -% -% common german names for notes. "es" means flat, "is" means sharp -% -% by Roland Meier -% based on swedish.ly by Mats Bengtsson. - - -% -% Please note that, while these names are used to enter *notes*, they -% actually are *melodic*s, i.e. they represent a pitch solely. Notes -% have a rhythmic part too. This is the reason that we don't write 'note { .. }' -% -\notenames { - ceses = \musicalpitch { -1 0 -2 } - ces = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - cis = \musicalpitch { -1 0 1 } - cisis = \musicalpitch { -1 0 2 } - deses = \musicalpitch { -1 1 -2 } - des = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - dis = \musicalpitch { -1 1 1 } - disis = \musicalpitch { -1 1 2 } - eses = \musicalpitch { -1 2 -2 } - es = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - eis = \musicalpitch { -1 2 1 } - eisis = \musicalpitch { -1 2 2 } - feses = \musicalpitch { -1 3 -2 } - fes = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fis = \musicalpitch { -1 3 1 } - fisis = \musicalpitch { -1 3 2 } - geses = \musicalpitch { -1 4 -2 } - ges = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - gis = \musicalpitch { -1 4 1 } - gisis = \musicalpitch { -1 4 2 } - ases = \musicalpitch { -1 5 -2 } - as = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - ais = \musicalpitch { -1 5 1 } - aisis = \musicalpitch { -1 5 2 } - heses = \musicalpitch { -1 6 -2 } - b = \musicalpitch { -1 6 -1 } - h = \musicalpitch { -1 6 0 } - his = \musicalpitch { -1 6 1 } - hisis = \musicalpitch { -1 6 2 } - - - % - % upper case: 1 octave lower. - % - - - Ceses = \musicalpitch { -2 0 -2 } - Ces = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Cis = \musicalpitch { -2 0 1 } - Cisis = \musicalpitch { -2 0 2 } - Deses = \musicalpitch { -2 1 -2 } - Des = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - Dis = \musicalpitch { -2 1 1 } - Disis = \musicalpitch { -2 1 2 } - Eses = \musicalpitch { -2 2 -2 } - Es = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - Eis = \musicalpitch { -2 2 1 } - Eisis = \musicalpitch { -2 2 2 } - Feses = \musicalpitch { -2 3 -2 } - Fes = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fis = \musicalpitch { -2 3 1 } - Fisis = \musicalpitch { -2 3 2 } - Geses = \musicalpitch { -2 4 -2 } - Ges = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Gis = \musicalpitch { -2 4 1 } - Gisis = \musicalpitch { -2 4 2 } - Ases = \musicalpitch { -2 5 -2 } - As = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - Ais = \musicalpitch { -2 5 1 } - Aisis = \musicalpitch { -2 5 2 } - Heses = \musicalpitch { -2 6 -2 } - B = \musicalpitch { -2 6 -1 } - H = \musicalpitch { -2 6 0 } - His = \musicalpitch { -2 6 1 } - Hisis = \musicalpitch { -2 6 2 } - - -} diff --git a/init/dynamic.ly b/init/dynamic.ly deleted file mode 100644 index 68f02880db..0000000000 --- a/init/dynamic.ly +++ /dev/null @@ -1,31 +0,0 @@ -% -% declare the standard dynamic identifiers. -% - -pppppp = \absdynamic { 13 } -ppppp = \absdynamic { 12 } -pppp = \absdynamic { 11 } -ppp = \absdynamic { 10 } -pp = \absdynamic { 9 } -p = \absdynamic { 8 } -mp = \absdynamic { 7 } -mf = \absdynamic { 6 } -f = \absdynamic { 5 } % f is a notename too. -ff = \absdynamic { 4 } -fff = \absdynamic { 3 } -ffff = \absdynamic { 2 } -fffff = \absdynamic { 1 } -ffffff = \absdynamic { 0 } - -fp = \absdynamic { 14 } -sf = \absdynamic { 15 } -sff = \absdynamic { 16 } -sfz = \absdynamic { 17 } -sp = \absdynamic { 18 } -spp = \absdynamic { 19 } -rfz = \absdynamic { 20 } - -cr = \spandynamic { 1 1 } -decr = \spandynamic { -1 1 } -rc = \spandynamic { 1 2 } % stop a crescendo -rced = \spandynamic { 1 2 } % stop a decrescendo diff --git a/init/english.ly b/init/english.ly deleted file mode 100644 index de66eda7d7..0000000000 --- a/init/english.ly +++ /dev/null @@ -1,158 +0,0 @@ -%{ - English note names spelled out in full, and abbreviated - with s for sharp and f for flat. -%} - -\notenames { - cflatflat = \musicalpitch { -1 0 -2 } - cflat = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - csharp = \musicalpitch { -1 0 1 } - csharpsharp = \musicalpitch { -1 0 2 } - dflatflat = \musicalpitch { -1 1 -2 } - dflat = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - dsharp = \musicalpitch { -1 1 1 } - dsharpsharp = \musicalpitch { -1 1 2 } - eflatflat = \musicalpitch { -1 2 -2 } - eflat = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - esharp = \musicalpitch { -1 2 1 } - esharpsharp = \musicalpitch { -1 2 2 } - fflatflat = \musicalpitch { -1 3 -2 } - fflat = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fsharp = \musicalpitch { -1 3 1 } - fsharpsharp = \musicalpitch { -1 3 2 } - gflatflat = \musicalpitch { -1 4 -2 } - gflat = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - gsharp = \musicalpitch { -1 4 1 } - gsharpsharp = \musicalpitch { -1 4 2 } - aflatflat = \musicalpitch { -1 5 -2 } - aflat = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - asharp = \musicalpitch { -1 5 1 } - asharpsharp = \musicalpitch { -1 5 2 } - bflatflat = \musicalpitch { -1 6 -2 } - bflat = \musicalpitch { -1 6 -1 } - b = \musicalpitch { -1 6 0 } - bsharp = \musicalpitch { -1 6 1 } - bsharpsharp = \musicalpitch { -1 6 2 } - - cff = \musicalpitch { -1 0 -2 } - cf = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - cs = \musicalpitch { -1 0 1 } - css = \musicalpitch { -1 0 2 } - dff = \musicalpitch { -1 1 -2 } - df = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - ds = \musicalpitch { -1 1 1 } - dss = \musicalpitch { -1 1 2 } - eff = \musicalpitch { -1 2 -2 } - ef = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - es = \musicalpitch { -1 2 1 } % es = E-flat in Dutch - ess = \musicalpitch { -1 2 2 } - fff = \musicalpitch { -1 3 -2 } - ff = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fs = \musicalpitch { -1 3 1 } - fss = \musicalpitch { -1 3 2 } - gff = \musicalpitch { -1 4 -2 } - gf = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - gs = \musicalpitch { -1 4 1 } - gss = \musicalpitch { -1 4 2 } - aff = \musicalpitch { -1 5 -2 } - af = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - as = \musicalpitch { -1 5 1 } % as = A-flat in Dutch - ass = \musicalpitch { -1 5 2 } - bff = \musicalpitch { -1 6 -2 } - bf = \musicalpitch { -1 6 -1 } - b = \musicalpitch { -1 6 0 } - bs = \musicalpitch { -1 6 1 } - bss = \musicalpitch { -1 6 2 } - - - % - % upper case: 1 octave lower. - % - - - Cflatflat = \musicalpitch { -2 0 -2 } - Cflat = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Csharp = \musicalpitch { -2 0 1 } - Csharpsharp = \musicalpitch { -2 0 2 } - Dflatflat = \musicalpitch { -2 1 -2 } - Dflat = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - Dsharp = \musicalpitch { -2 1 1 } - Dsharpsharp = \musicalpitch { -2 1 2 } - Eflatflat = \musicalpitch { -2 2 -2 } - Eflat = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - Esharp = \musicalpitch { -2 2 1 } - Esharpsharp = \musicalpitch { -2 2 2 } - Fflatflat = \musicalpitch { -2 3 -2 } - Fflat = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fsharp = \musicalpitch { -2 3 1 } - Fsharpsharp = \musicalpitch { -2 3 2 } - Gflatflat = \musicalpitch { -2 4 -2 } - Gflat = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Gsharp = \musicalpitch { -2 4 1 } - Gsharpsharp = \musicalpitch { -2 4 2 } - Aflatflat = \musicalpitch { -2 5 -2 } - Aflat = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - Asharp = \musicalpitch { -2 5 1 } - Asharpsharp = \musicalpitch { -2 5 2 } - Bflatflat = \musicalpitch { -2 6 -2 } - Bflat = \musicalpitch { -2 6 -1 } - B = \musicalpitch { -2 6 0 } - Bsharp = \musicalpitch { -2 6 1 } - Bsharpsharp = \musicalpitch { -2 6 2 } - - Cff = \musicalpitch { -2 0 -2 } - Cf = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Cs = \musicalpitch { -2 0 1 } - Css = \musicalpitch { -2 0 2 } - Dff = \musicalpitch { -2 1 -2 } - Df = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - Ds = \musicalpitch { -2 1 1 } - Dss = \musicalpitch { -2 1 2 } - Eff = \musicalpitch { -2 2 -2 } - Ef = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - Es = \musicalpitch { -2 2 1 } - Ess = \musicalpitch { -2 2 2 } - Fff = \musicalpitch { -2 3 -2 } - Ff = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fs = \musicalpitch { -2 3 1 } - Fss = \musicalpitch { -2 3 2 } - Gff = \musicalpitch { -2 4 -2 } - Gf = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Gs = \musicalpitch { -2 4 1 } - Gss = \musicalpitch { -2 4 2 } - Aff = \musicalpitch { -2 5 -2 } - Af = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - As = \musicalpitch { -2 5 1 } - Ass = \musicalpitch { -2 5 2 } - Bff = \musicalpitch { -2 6 -2 } - Bf = \musicalpitch { -2 6 -1 } - B = \musicalpitch { -2 6 0 } - Bs = \musicalpitch { -2 6 1 } - Bss = \musicalpitch { -2 6 2 } - - -} diff --git a/init/engraver.ly b/init/engraver.ly deleted file mode 100644 index 089b29a1b9..0000000000 --- a/init/engraver.ly +++ /dev/null @@ -1,286 +0,0 @@ -% -% setup for Request->Element conversion. Guru-only -% - -StaffContext=\translator { - \type "Line_group_engraver_group"; - \name Staff ; - barAuto = "1"; - -%{ - The Hara_kiri_line_group_engraver is a Line_group_engraver - that will not typeset an empty line of staff, i.e., a line - of staff with only rests in it. This is needed for orchestral - scores. Comment-out Line_group_engraver_group, and uncomment - Hara_kiri_line_group_engraver. -%} -% \type "Hara_kiri_line_group_engraver"; - - \consists "Multi_measure_rest_engraver"; - \consists "Repeat_engraver"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_symbol_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - -%{ - Uncomment to get bar numbers on single staff systems: - - The Bar_number_engraver puts a number over a staff created - at the same level of hierarchy. This why you have to add it - here separately if you want to have numbers on single staff - systems: The Bar_number_engraver in Score_engraver will only - put numbers on bars that are Score ("system") wide. Such - bars are only created when the toplevel system has multiple - children-staffs. - -%} -%{ - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; -%} -%{ - The Staff_margin_engraver puts the name of the instrument - (\property Staff.instrument; Staff.instr for subsequent lines) - to the left of a staff. -%} - defaultClef = treble; - - marginBreakPriority = "-5"; - -%{ - \consists "Staff_margin_engraver"; -%} - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; - dynamicStyle = "dynamic"; -}; - -\translator{\StaffContext } -\translator { - \type "Line_group_engraver_group"; - \name ChoirStaff; - \consists "Vertical_align_engraver"; - \consists "Staff_group_bar_engraver"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "GrandStaff"; - \accepts "Lyrics"; - \accepts "ChordNames"; -} - - -RhythmicStaffContext=\translator{ - \type "Line_group_engraver_group"; - numberOfStaffLines = "1"; - \consists "Pitch_squash_engraver"; - \consists "Separating_line_group_engraver"; - \name RhythmicStaff; - - \consists "Repeat_engraver"; - \consists "Bar_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_symbol_engraver"; - \accepts "Voice"; -}; -\translator{\RhythmicStaffContext} -VoiceContext = \translator { - \type "Engraver_group_engraver"; - \consists "Dynamic_engraver"; - \name Voice ; - - \consists "Rest_engraver"; - \consists "Dot_column_engraver"; - \consists "Stem_engraver"; - \consists "Beam_engraver"; - \consists "Abbreviation_beam_engraver"; -% \consists "Multi_measure_rest_engraver"; - - % ugh. Order matters here. - \consists "Text_engraver"; - \consists "Script_engraver"; - \consists "Rhythmic_column_engraver"; - \consists "Font_size_engraver"; - \consists "Slur_engraver"; - \consists "Tie_engraver"; - \consists "Tuplet_engraver"; - \consists "Note_heads_engraver" ; - \consists "Skip_req_swallow_translator"; -}; - -\translator {\VoiceContext} - -GrandStaffContext=\translator{ - \type "Line_group_engraver_group"; - \name GrandStaff; - \consists "Span_bar_engraver"; - \consists "Vertical_align_engraver"; - \consists "Piano_bar_engraver"; - minVerticalAlign = 1.5*\staffheight; - - \accepts "Staff"; -}; -\translator{\GrandStaffContext} - -\translator { - \type "Line_group_engraver_group"; -% \type "Hara_kiri_line_group_engraver"; - \consists "Span_bar_engraver"; - \consists "Vertical_align_engraver"; - \consists "Staff_group_bar_engraver"; - \name StaffGroup; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "GrandStaff"; - \accepts "Lyrics"; - \accepts "ChordNames"; -} - -\translator{ - \type "Line_group_engraver_group"; - - \name LyricVoice ; - \consists "Separating_line_group_engraver"; - \consists "Lyric_engraver"; - \consists "Extender_engraver"; - \consists "Beam_req_swallow_translator"; -} - -\translator { - \type "Line_group_engraver_group"; - \name Lyrics; - \consists "Vertical_align_engraver"; - \accepts "LyricVoice"; -} - -\translator{ - \type "Line_group_engraver_group"; - - \name ChordNameVoice ; - \consists "Separating_line_group_engraver"; - \consists "Chord_name_engraver"; -} - -\translator { - \type "Line_group_engraver_group"; - \name ChordNames; - \consists "Vertical_align_engraver"; - \accepts "ChordNameVoice"; -} - -ScoreContext = \translator { - \type Score_engraver; - \name Score; - - \consists "Timing_engraver"; - - \consists "Bar_column_engraver"; - \consists "Span_score_bar_engraver"; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; - - - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "Lyrics"; - \accepts "ChordNames"; - \accepts "GrandStaff"; - \accepts "ChoirStaff"; -}; -\translator { \ScoreContext } - -ScoreWithNumbers = \translator { - \type "Score_engraver"; - - % uncomment to bar numbers on a whole system. - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - -}; - -StupidScore = \translator { - \type "Score_engraver"; - \name Score; - \consists "Note_heads_engraver"; -}; - - - -BarNumberingStaffContext = \translator { - \StaffContext - barColumnPriority = "0"; - marginBreakPriority = "-4"; - \consists "Mark_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - -}; - - -HaraKiriStaffContext = \translator { - \type "Hara_kiri_line_group_engraver"; - \name Staff; - barColumnPriority = "0"; - marginBreakPriority = "-4"; - - \consists "Repeat_engraver"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Time_signature_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_symbol_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Staff_margin_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; -}; - -% huh, Score should do HaraKiri, not Part yes? -OrchestralPartStaffContext = \translator { -% \HaraKiriStaffContext - \StaffContext - barColumnPriority = "0"; - marginBreakPriority = "-4"; - \consists "Mark_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; -}; - -% where to put HaraKiri here? -OrchestralScoreContext= \translator { - \type Score_engraver; - \name Score; - barScriptPadding = "2.0"; % dimension \pt - markScriptPadding = "4.0"; - barColumnPriority = "-4"; - markBreakPriority = "-4"; - defaultClef = treble; - - \consists "Timing_engraver"; - - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - \consists "Mark_engraver"; - \consists "Span_score_bar_engraver"; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; - - \accepts "ChoirStaff"; - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "Lyrics"; - \accepts "ChordNames"; - \accepts "GrandStaff"; -}; diff --git a/init/fragment.ly b/init/fragment.ly deleted file mode 100644 index 3ddb7de69a..0000000000 --- a/init/fragment.ly +++ /dev/null @@ -1,25 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly" - -\include "paper16.ly"; - -\paper { - \paper_sixteen - linewidth = -1.0\cm; - castingalgorithm = \Wordwrap; - "unusedentry" = "}\\def\\nolilyfooter{"; -} - - -\score { -% \notes\relative c { - \notes { - \maininput - } - \paper { } - -} diff --git a/init/init.fly b/init/init.fly deleted file mode 100644 index cacdd4b865..0000000000 --- a/init/init.fly +++ /dev/null @@ -1,14 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly" - -\score { - \notes\relative c { - \maininput - } - \paper { } - \midi{ } -} diff --git a/init/init.ly b/init/init.ly deleted file mode 100644 index c01291c340..0000000000 --- a/init/init.ly +++ /dev/null @@ -1,8 +0,0 @@ -% Toplevel initialisation file. - -\version "1.0.14"; - - -\include "declarations.ly"; - -\maininput diff --git a/init/italiano.ly b/init/italiano.ly deleted file mode 100644 index dd600a4396..0000000000 --- a/init/italiano.ly +++ /dev/null @@ -1,49 +0,0 @@ -%{ - Common italian names for notes. "b" means flat (bemolle), "d" means sharp (diesis) - Adapted from dutch.ly. - - English: a b c d e f g - Italian: la si do re mi fa sol - - For french naming just change 'do' in 'ut'. -%} - -% contributed by Paolo Zuliani - -\notenames { - dobb = \musicalpitch { -1 0 -2 } - dob = \musicalpitch { -1 0 -1 } - do = \musicalpitch { -1 0 0 } - dod = \musicalpitch { -1 0 1 } - dodd = \musicalpitch { -1 0 2 } - rebb = \musicalpitch { -1 1 -2 } - reb = \musicalpitch { -1 1 -1 } - re = \musicalpitch { -1 1 0 } - red = \musicalpitch { -1 1 1 } - redd = \musicalpitch { -1 1 2 } - mibb = \musicalpitch { -1 2 -2 } - mib = \musicalpitch { -1 2 -1 } - mi = \musicalpitch { -1 2 0 } - mid = \musicalpitch { -1 2 1 } - midd = \musicalpitch { -1 2 2 } - fabb = \musicalpitch { -1 3 -2 } - fab = \musicalpitch { -1 3 -1 } - fa = \musicalpitch { -1 3 0 } - fad = \musicalpitch { -1 3 1 } - fadd = \musicalpitch { -1 3 2 } - solbb = \musicalpitch { -1 4 -2 } - solb = \musicalpitch { -1 4 -1 } - sol = \musicalpitch { -1 4 0 } - sold = \musicalpitch { -1 4 1 } - soldd = \musicalpitch { -1 4 2 } - labb = \musicalpitch { -1 5 -2 } - lab = \musicalpitch { -1 5 -1 } - la = \musicalpitch { -1 5 0 } - lad = \musicalpitch { -1 5 1 } - ladd = \musicalpitch { -1 5 2 } - sibb = \musicalpitch { -1 6 -2 } - sib = \musicalpitch { -1 6 -1 } - si = \musicalpitch { -1 6 0 } - sid = \musicalpitch { -1 6 1 } - sidd = \musicalpitch { -1 6 2 } -} diff --git a/init/midi.ly b/init/midi.ly deleted file mode 100644 index 114d34f20f..0000000000 --- a/init/midi.ly +++ /dev/null @@ -1,5 +0,0 @@ - -\midi { - \tempo 4=60; - \include "performer.ly" -} diff --git a/init/nederlands.ly b/init/nederlands.ly deleted file mode 100644 index 9b652a6bd2..0000000000 --- a/init/nederlands.ly +++ /dev/null @@ -1,100 +0,0 @@ -%{ - common dutch names for notes. "es" means flat, "is" means sharp - - - - - Please note that, while these names are used to enter *notes*, they - actually are *melodic*s, i.e. they represent a pitch solely. Notes - have a rhythmic part too. This is the reason that we don't write 'note { .. }' - -%} - -\notenames { - ceses = \musicalpitch { -1 0 -2 } - ces = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - cis = \musicalpitch { -1 0 1 } - cisis = \musicalpitch { -1 0 2 } - deses = \musicalpitch { -1 1 -2 } - des = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - dis = \musicalpitch { -1 1 1 } - disis = \musicalpitch { -1 1 2 } - eeses = \musicalpitch { -1 2 -2 } - eses = \musicalpitch { -1 2 -2 } - ees = \musicalpitch { -1 2 -1 } - es = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - eis = \musicalpitch { -1 2 1 } - eisis = \musicalpitch { -1 2 2 } - feses = \musicalpitch { -1 3 -2 } - fes = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fis = \musicalpitch { -1 3 1 } - fisis = \musicalpitch { -1 3 2 } - geses = \musicalpitch { -1 4 -2 } - ges = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - gis = \musicalpitch { -1 4 1 } - gisis = \musicalpitch { -1 4 2 } - aeses = \musicalpitch { -1 5 -2 } - ases = \musicalpitch { -1 5 -2 } - aes = \musicalpitch { -1 5 -1 } - as = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - ais = \musicalpitch { -1 5 1 } - aisis = \musicalpitch { -1 5 2 } - beses = \musicalpitch { -1 6 -2 } - bes = \musicalpitch { -1 6 -1 } - b = \musicalpitch { -1 6 0 } - bis = \musicalpitch { -1 6 1 } - bisis = \musicalpitch { -1 6 2 } - - - % - % upper case: 1 octave lower. - % - - - Ceses = \musicalpitch { -2 0 -2 } - Ces = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Cis = \musicalpitch { -2 0 1 } - Cisis = \musicalpitch { -2 0 2 } - Deses = \musicalpitch { -2 1 -2 } - Des = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - Dis = \musicalpitch { -2 1 1 } - Disis = \musicalpitch { -2 1 2 } - Eses = \musicalpitch { -2 2 -2 } - Es = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - Eis = \musicalpitch { -2 2 1 } - Eisis = \musicalpitch { -2 2 2 } - Feses = \musicalpitch { -2 3 -2 } - Fes = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fis = \musicalpitch { -2 3 1 } - Fisis = \musicalpitch { -2 3 2 } - Geses = \musicalpitch { -2 4 -2 } - Ges = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Gis = \musicalpitch { -2 4 1 } - Gisis = \musicalpitch { -2 4 2 } - Aeses = \musicalpitch { -2 5 -2 } - Ases = \musicalpitch { -2 5 -2 } - Aes = \musicalpitch { -2 5 -1 } - As = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - Ais = \musicalpitch { -2 5 1 } - Aisis = \musicalpitch { -2 5 2 } - Beses = \musicalpitch { -2 6 -2 } - Bes = \musicalpitch { -2 6 -1 } - B = \musicalpitch { -2 6 0 } - Bis = \musicalpitch { -2 6 1 } - Bisis = \musicalpitch { -2 6 2 } - - -} - diff --git a/init/norsk.ly b/init/norsk.ly deleted file mode 100644 index 714eb10e46..0000000000 --- a/init/norsk.ly +++ /dev/null @@ -1,183 +0,0 @@ - -% $Id: norsk.ly,v 1.1 1998/03/25 11:38:28 arvidg Exp arvidg $ - -%{ - - Common norwegian names for notes, including versions without the - double s-es to save typing, as well as the traditional names with - them not to confuse musicians. "es" or "ess" means flat, "is" or - "iss" means sharp. - - Otherwise, the main difference from the dutch names is the that the - "b" is called "h" in norwegian, while the dutch "bes" is a norwegian - "b". - - Staying within the (proud?) naming convention for norwegian language - setup used in LaTeX, this file is called "norsk.ly" instead of - "norwegian.ly", even if all other languages' files use the english - name. - - This file is based on "dutch.ly". Basically, I copied "dutch.ly", - duplicated all lines containing at least one "is" or "es", changed - every other "is" into an "iss" and every other "es" into an "ess", - added "ass" et al, and made some b->h-related changes. There may be - bugs in here; please tell me (or send patches) if you find any. - - Arvid Gr=F8tting - -%} - -\notenames { - ceses = \musicalpitch { -1 0 -2 } - cessess = \musicalpitch { -1 0 -2 } - ces = \musicalpitch { -1 0 -1 } - cess = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - cis = \musicalpitch { -1 0 1 } - ciss = \musicalpitch { -1 0 1 } - cisis = \musicalpitch { -1 0 2 } - cississ = \musicalpitch { -1 0 2 } - deses = \musicalpitch { -1 1 -2 } - dessess = \musicalpitch { -1 1 -2 } - des = \musicalpitch { -1 1 -1 } - dess = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - dis = \musicalpitch { -1 1 1 } - diss = \musicalpitch { -1 1 1 } - disis = \musicalpitch { -1 1 2 } - dississ = \musicalpitch { -1 1 2 } - eeses = \musicalpitch { -1 2 -2 } - eessess = \musicalpitch { -1 2 -2 } - eses = \musicalpitch { -1 2 -2 } - essess = \musicalpitch { -1 2 -2 } - ees = \musicalpitch { -1 2 -1 } - eess = \musicalpitch { -1 2 -1 } - es = \musicalpitch { -1 2 -1 } - ess = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - eis = \musicalpitch { -1 2 1 } - eiss = \musicalpitch { -1 2 1 } - eisis = \musicalpitch { -1 2 2 } - eississ = \musicalpitch { -1 2 2 } - feses = \musicalpitch { -1 3 -2 } - fessess = \musicalpitch { -1 3 -2 } - fes = \musicalpitch { -1 3 -1 } - fess = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fis = \musicalpitch { -1 3 1 } - fiss = \musicalpitch { -1 3 1 } - fisis = \musicalpitch { -1 3 2 } - fississ = \musicalpitch { -1 3 2 } - geses = \musicalpitch { -1 4 -2 } - gessess = \musicalpitch { -1 4 -2 } - ges = \musicalpitch { -1 4 -1 } - gess = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - g = \musicalpitch { -1 4 0 } - gis = \musicalpitch { -1 4 1 } - giss = \musicalpitch { -1 4 1 } - gisis = \musicalpitch { -1 4 2 } - gississ = \musicalpitch { -1 4 2 } - aeses = \musicalpitch { -1 5 -2 } - aessess = \musicalpitch { -1 5 -2 } - ases = \musicalpitch { -1 5 -2 } - assess = \musicalpitch { -1 5 -2 } - aes = \musicalpitch { -1 5 -1 } - aess = \musicalpitch { -1 5 -1 } - as = \musicalpitch { -1 5 -1 } - ass = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - ais = \musicalpitch { -1 5 1 } - aiss = \musicalpitch { -1 5 1 } - aisis = \musicalpitch { -1 5 2 } - aississ = \musicalpitch { -1 5 2 } - bes = \musicalpitch { -1 6 -2 } - bess = \musicalpitch { -1 6 -2 } - b = \musicalpitch { -1 6 -1 } - b = \musicalpitch { -1 6 -1 } - h = \musicalpitch { -1 6 0 } - his = \musicalpitch { -1 6 1 } - hiss = \musicalpitch { -1 6 1 } - hisis = \musicalpitch { -1 6 2 } - hississ = \musicalpitch { -1 6 2 } - - - % - % upper case: 1 octave lower, as usual. - % - - - Ceses = \musicalpitch { -2 0 -2 } - Cessess = \musicalpitch { -2 0 -2 } - Ces = \musicalpitch { -2 0 -1 } - Cess = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Cis = \musicalpitch { -2 0 1 } - Ciss = \musicalpitch { -2 0 1 } - Cisis = \musicalpitch { -2 0 2 } - Cississ = \musicalpitch { -2 0 2 } - Deses = \musicalpitch { -2 1 -2 } - Dessess = \musicalpitch { -2 1 -2 } - Des = \musicalpitch { -2 1 -1 } - Dess = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - D = \musicalpitch { -2 1 0 } - Dis = \musicalpitch { -2 1 1 } - Diss = \musicalpitch { -2 1 1 } - Disis = \musicalpitch { -2 1 2 } - Dississ = \musicalpitch { -2 1 2 } - Eses = \musicalpitch { -2 2 -2 } - Essess = \musicalpitch { -2 2 -2 } - Es = \musicalpitch { -2 2 -1 } - Ess = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - E = \musicalpitch { -2 2 0 } - Eis = \musicalpitch { -2 2 1 } - Eiss = \musicalpitch { -2 2 1 } - Eisis = \musicalpitch { -2 2 2 } - Eississ = \musicalpitch { -2 2 2 } - Feses = \musicalpitch { -2 3 -2 } - Fessess = \musicalpitch { -2 3 -2 } - Fes = \musicalpitch { -2 3 -1 } - Fess = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fis = \musicalpitch { -2 3 1 } - Fiss = \musicalpitch { -2 3 1 } - Fisis = \musicalpitch { -2 3 2 } - Fississ = \musicalpitch { -2 3 2 } - Geses = \musicalpitch { -2 4 -2 } - Gessess = \musicalpitch { -2 4 -2 } - Ges = \musicalpitch { -2 4 -1 } - Gess = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Gis = \musicalpitch { -2 4 1 } - Giss = \musicalpitch { -2 4 1 } - Gisis = \musicalpitch { -2 4 2 } - Gississ = \musicalpitch { -2 4 2 } - Aeses = \musicalpitch { -2 5 -2 } - Aessess = \musicalpitch { -2 5 -2 } - Ases = \musicalpitch { -2 5 -2 } - Assess = \musicalpitch { -2 5 -2 } - Aes = \musicalpitch { -2 5 -1 } - Aess = \musicalpitch { -2 5 -1 } - As = \musicalpitch { -2 5 -1 } - Ass = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - A = \musicalpitch { -2 5 0 } - Ais = \musicalpitch { -2 5 1 } - Aiss = \musicalpitch { -2 5 1 } - Aisis = \musicalpitch { -2 5 2 } - Aississ = \musicalpitch { -2 5 2 } - Bes = \musicalpitch { -2 6 -2 } - Bess = \musicalpitch { -2 6 -2 } - B = \musicalpitch { -2 6 -1 } - H = \musicalpitch { -2 6 0 } - His = \musicalpitch { -2 6 1 } - Hiss = \musicalpitch { -2 6 1 } - Hisis = \musicalpitch { -2 6 2 } - Hississ = \musicalpitch { -2 6 2 } - -} - - - diff --git a/init/paper.ly b/init/paper.ly deleted file mode 100644 index 794a69b345..0000000000 --- a/init/paper.ly +++ /dev/null @@ -1,9 +0,0 @@ -% paper.ly - -linewidth20 = \hsize - 2.5 * \staffheight; -textheight20 = \vsize - 5.0 * \staffheight; -linewidth = \staffheight/20.0 * \linewidth20; -textheight = \staffheight/20.0 * \textheight20; - -indent = \linewidth / 14.0; - diff --git a/init/paper11.ly b/init/paper11.ly deleted file mode 100644 index dac7cbd31b..0000000000 --- a/init/paper11.ly +++ /dev/null @@ -1,18 +0,0 @@ -% paper11.ly - -\include "table11.ly"; - -paper_eleven = \paper { - staffheight = 11.0\pt; - - % ugh see table11 for sizes - quartwidth = 3.63\pt; - wholewidth = 5.45\pt; - - arithmetic_basicspace = 2.; - arithmetic_multiplier = 4.8\pt; - - 0=\symboltables { \table_eleven } - \include "params.ly"; -} - diff --git a/init/paper13.ly b/init/paper13.ly deleted file mode 100644 index 96f5e61266..0000000000 --- a/init/paper13.ly +++ /dev/null @@ -1,19 +0,0 @@ -% paper13.ly - -\include "table13.ly"; - -paper_thirteen = \paper { - staffheight = 13.0\pt; - - % ugh see table13 for sizes - quartwidth = 4.29\pt; - wholewidth = 6.44\pt; - - - arithmetic_basicspace = 2.; - arithmetic_multiplier = 4.8\pt; - - 0=\symboltables { \table_thirteen } - \include "params.ly"; -} - diff --git a/init/paper16.ly b/init/paper16.ly deleted file mode 100644 index dc67fabdf3..0000000000 --- a/init/paper16.ly +++ /dev/null @@ -1,31 +0,0 @@ -% paper16.ly - -\include "table13.ly"; -\include "table11.ly"; -\include "table16.ly"; - - - -\version "1.0.14"; - -paper_sixteen = \paper { - staffheight = 16.0\pt; - - % ugh, see table16 for sizes - quartwidth = 5.28\pt; - wholewidth = 7.92\pt; - - - arithmetic_basicspace = 2.; - arithmetic_multiplier = 4.8\pt; - texsetting = "\\input lilyponddefs \\musixsixteendefs "; - pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"; - scmsetting = "(display \"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\");\n"; - scmsetting = "(display \"\\\\input lilyponddefs \\\\musixsixteendefs\");\n"; - - 0 = \symboltables { \table_sixteen } - -1 = \symboltables { \table_thirteen } - -2 = \symboltables { \table_eleven } - - \include "params.ly"; -} diff --git a/init/paper20.ly b/init/paper20.ly deleted file mode 100644 index 69c36b358d..0000000000 --- a/init/paper20.ly +++ /dev/null @@ -1,32 +0,0 @@ -% paper20.ly - -\include "table20.ly"; - - \include "table13.ly"; - \include "table16.ly"; - -\version "1.0.14"; - -paper_twenty = \paper { - staffheight = 20.0\pt; - - % ugh see table20 for sizes - quartwidth = 6.61\pt; - wholewidth = 9.90\pt; - - - arithmetic_basicspace = 2.; - arithmetic_multiplier = 6.\pt; - texsetting = "\\input lilyponddefs \\musixtwentydefs "; - pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"; - % urg, debugging only - scmsetting = "(display \"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\");\n"; - scmsetting = "(display \"\\\\input lilyponddefs \\\\musixtwentydefs\");\n"; - - -2 = \symboltables { \table_thirteen } - -1 = \symboltables { \table_sixteen } - 0 = \symboltables { \table_twenty } - - \include "params.ly"; -} - diff --git a/init/paper26.ly b/init/paper26.ly deleted file mode 100644 index f8d662b64c..0000000000 --- a/init/paper26.ly +++ /dev/null @@ -1,20 +0,0 @@ -% paper26.ly - -\include "table26.ly"; - -paper_twentysix = \paper { - staffheight = 26.0\pt; - - % ugh see table26 for sizes - quartwidth = 8.59\pt; - wholewidth = 12.87\pt; - - arithmetic_basicspace = 2.; - arithmetic_multiplier = 6.\pt; - - 0=\symboltables { \table_twentysix } - \include "params.ly"; - linewidth = \linewidth20; - textheight = \textheight20; -} - diff --git a/init/params.ly b/init/params.ly deleted file mode 100644 index 650f51783b..0000000000 --- a/init/params.ly +++ /dev/null @@ -1,104 +0,0 @@ -% params.ly -% generic paper parameters - -paperfile = \papersize + ".ly"; -% paperfile = "a4.ly"; -\include \paperfile; -\include "paper.ly"; - -interline = \staffheight / 4.0; - - -% thickness of stafflines -staffline = \interline / 10.0; - -beam_thickness = 0.52 * (\interline - \staffline); -interbeam = (2.0 * \interline - \beam_thickness) / 2.0; -interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0; - -% stems and beams -% -% poor man's array size -stem_max = 3.0; -% -stem_length0 = 3.5*\interline; -stem_length1 = 2.5 * \interline; -stem_length2 = 2.0 * \interline; -stem_length3 = 1.5 * \interline; - -% only used for beams -minimum_stem_length0 = 0.0; % not used -minimum_stem_length1 = 1.5 * \interline; -minimum_stem_length2 = 1.25 * \interline; -minimum_stem_length3 = 1.0 * \interline; - -% stems in unnatural (forced) direction should be shortened, -% according to [Roush & Gourlay]. Their suggestion to knock off -% a whole staffspace seems a bit drastical: we'll do half. -% -forced_stem_shorten0 = 0.5 * \interline; -forced_stem_shorten1 = \forced_stem_shorten0; -forced_stem_shorten2 = \forced_stem_shorten1; -forced_stem_shorten3 = \forced_stem_shorten2; - -% there are several ways to calculate the direction of a beam -% -% * MAJORITY : number count of up or down notes -% * MEAN : mean centre distance of all notes -% * MEDIAN : mean centre distance weighted per note -% -% enum Dir_algorithm { DOWN=-1, UP=1, MAJORITY=2, MEAN, MEDIAN }; -% -DOWN = -1.0; -UP = 1.0; -MAJORITY = 2.0; -MEAN = 3.0; -MEDIAN = 4.0; -% [Ross]: majority -beam_dir_algorithm = \MAJORITY; - -% catch suspect beam slopes, set slope to zero if -% outer stem is lengthened more than -beam_lengthened = 0.2 * \interline; -% and slope is running away steeper than -beam_steep_slope = 0.2 / 1.0; - -% OSU: suggested gap = ss / 5; -slur_x_gap = \interline / 5.0; -slur_x_minimum = 2.0 * \interline; -slur_slope_damping = 0.5; -tie_x_minimum = \slur_x_minimum; -tie_x_gap = \slur_x_gap; -tie_slope_damping = 0.3; - -% ugh: rename to bow (in bezier.cc and fonts.doc too...) -% slur_thickness = 1.8 * \staffline; -slur_thickness = 1.4 * \staffline; -slur_height_limit = \staffheight; - -% mmm, try bit flatter slurs -% slur_ratio = 1.0 / 3.0; -slur_ratio = 0.3; -slur_clip_ratio = 1.2; -slur_clip_height = 3.0 * \staffheight; -slur_clip_angle = 100.0; -slur_rc_factor = 2.4; - -% ugh -notewidth = (\quartwidth + \wholewidth) / 2.0; - -% ugh -barsize = \staffheight; -rulethickness = \staffline; -stemthickness = \staffline; - - -gourlay_energybound = 100000.; -%{ -The following bounds the number of measures -on a line. Decreasing it greatly reduces computation time -%} -gourlay_maxmeasures = 10.; -castingalgorithm = \Gourlay; -\include "engraver.ly"; - diff --git a/init/part-paper.ly b/init/part-paper.ly deleted file mode 100644 index 162984e5b3..0000000000 --- a/init/part-paper.ly +++ /dev/null @@ -1,9 +0,0 @@ -%part-paper.ly - -\paper { - \translator { \OrchestralPartStaffContext } - \translator { \ScoreContext skipBars = 1; } - % for simple testing only! -% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn -} - diff --git a/init/performer.ly b/init/performer.ly deleted file mode 100644 index 105243f5c5..0000000000 --- a/init/performer.ly +++ /dev/null @@ -1,68 +0,0 @@ -% -% setup for Request->Element conversion. Guru-only -% -\translator { - \type "Staff_performer"; - \accepts Voice; - \name Staff; - \consists "Key_performer"; - \consists "Time_signature_performer"; -} - -\translator -{ - \type "Performer_group_performer"; - \name Thread ; - \consists "Note_performer"; -} -\translator -{ - \type "Performer_group_performer"; - \accepts Thread; -\name Voice; -} -\translator -{ - \type "Performer_group_performer"; - \accepts Staff; - -\name GrandStaff;} - -\translator { - \type "Performer_group_performer"; - \consists "Lyric_performer"; -\name LyricVoice; -} - -\translator{ - \type "Performer_group_performer"; - \name ChoirStaff; - \accepts Staff; -} -\translator { - \type "Staff_performer"; - \accepts LyricVoice; - \name Lyrics; - \consists "Time_signature_performer"; -} -\translator -{ - \type Performer_group_performer; - - \name StaffGroup; - \accepts Staff; -} -\translator { - \type "Score_performer"; - - - \name Score; - instrument = piano; - \accepts Staff; - \accepts GrandStaff; - \accepts Lyrics; - \accepts StaffGroup; - \accepts ChoirStaff; - \consists "Swallow_performer"; -} - diff --git a/init/property.ly b/init/property.ly deleted file mode 100644 index 5ae7c273d3..0000000000 --- a/init/property.ly +++ /dev/null @@ -1,266 +0,0 @@ -% property.ly -% list of properties that lily recognises -% and some shorthands (ugh) - -%{ - -PROPERTIES - -name value effect shorthand - -[Voice] -ydirection -1 force stem down \stemdown -ydirection 0 stem direction free \stemboth -ydirection 1 force stem up \stemup - -pletvisibility 0 show nothing -pletvisibility 1 show number -pletvisibility 2 show (number and bracket)-if-no-beam -pletvisibility 3 show number, and bracket-if-no-beam -pletvisibility 4 show number, and bracket - -slurdash 0 normal slurs -slurdash 1 dotted slurs -slurdash >1 dashed slurs - -slurydirection -1 force stem down \slurdown -slurydirection 0 stem direction free \slurboth -slurydirection 1 force stem up \slurup - -slurydirection -1 force stem down \slurdown -slurydirection 0 stem direction free \slurboth -slurydirection 1 force stem up \slurup - -textalignment -1 left alignment of text -textalignment 0 center alignment of text -textalignment 1 right alignment of text - -[Score?] -beamslopedamping 0 no damping \beamslopeproportional -beamslopedamping 1 damping1) \beamslopedamped -beamslopedamping 100000 zero slope \beamslopezero - -[Score?] -beamquantisation 0 no quantisations \beamposfree -beamquantisation 1 quantise pos and slope \beamposnormal -beamquantisation 2 quantise avoide wedge2) \beampostraditional - -[Staff] -keyoctaviation 0 Key signature only for specified octave \specialkey -keyoctaviation 1 Key signature for all octaves \normalkey - -[Staff] -barAlways 0 none -barAlways 1 generate bar at every moment - -[Staff] -barAuto 0 none -barAuto 1 auto-generate bar every measure - -timeSignatureStyle C Use C and stroked C for 4/4,2/2 -timeSignatureStyle old Use old style mensuration marks -timeSignatureStyle 1 Use single number -timeSignatureStyle "" Use normal two-digit time signature -timeSignatureStyle Cn/m Set symbol explicitly, n/m=2/2 or 4/4 -timeSignatureStyle oldn/m Set symbol explicitly, - n/m=2/2,3/2,3/4,4/4,6/4 or 9/4. - -[Staff?] -instrument ascii midi instrument table lookup - -[Score] -chordInversion 0/1 Find and display chord with inversion? - - -1) after beam slope damping table suggested in [Wanske] -2) [Wanske] as well as [Ross] suggests that beams sloped upward must not - start sitting on a staffline, and beams sloped downward must not hang - from a staffline (similar for beam-ends). This would create a wedge - that is traditionally being avoided because it could easily be filled-up - with ink. - However, avoiding these wedges restricts the freedom of beams quite a lot - while they don't seem to be a problem in modern printing. - In no piece of sheetmusic engraved after 1953 (Baerenreiter) i've seen - these wedges being avoided. - -%} - -%hmm, (these) abbrevs suck, imo -% i guess they're meant as some form of doco -% that's what i use them for... -stemup = - \property Voice.ydirection = \up -stemboth= \property Voice.ydirection = \center -stemdown = \property Voice.ydirection = \down - -slurup = \notes { - s1*0 - \property Voice.slurydirection = \up - } -slurboth= \notes { - s1*0 - \property Voice.slurydirection = \center -} -slurdown = \notes { - s1*0 - \property Voice.slurydirection = \down -} - -shifton = \property Voice.hshift = 1 -shiftoff = \property Voice.hshift = 0 - -onevoice = { - \stemboth \shiftoff -} - -voiceone = { - \type Voice = one - \stemup -} - -voicetwo = { - \type Voice = two - \stemdown -} - -voicethree = { - \type Voice = three - \stemup - -} - -voicefour = { - \type Voice = four - \stemdown - \shifton -} - -onestaff = { - \translator Staff=one -} - -staffone = { - \translator Staff=one - \property Staff.ydirection = \center - \property Staff.hshift = 0 -} - -stafftwo = { - \translator Staff=two - \property Staff.ydirection = \center - \property Staff.hshift = 0 -} - -staffthree = { - \translator Staff=three - \property Staff.ydirection = \center - \property Staff.hshift = 0 -} - -stafffour = { - \translator Staff=four - \property Staff.ydirection = \center - \property Staff.hshift = 0 -} - -% ugh, cluttering global namespace... -none=0 -free=0 -normal=1 -traditional=2 -infinity=10000 - -beamslopeproportional = { - \property Score.beamslopedamping = \none -} - -beamslopedamped = { - \property Score.beamslopedamping = \normal -} - -beamslopezero = { - \property Score.beamslopedamping = \infinity -} - -% this sucks, you'd want to pass an array, at least -% (or embedded code: you still can't dictate the slope / stemlength) -beamposfree = { - \property Score.beamquantisation = \none -} - -beamposnormal = { - \property Score.beamquantisation = \normal -} - -beampostraditional = { - \property Score.beamquantisation = \traditional -} - -slurnormal = { - \property Voice.slurdash = 0 -} - -slurdotted = { - \property Voice.slurdash = 1 -} - -%{ - for grace note hack, see input/test/grace.ly -%} -pletoff = { - \property Voice.pletvisibility = 0 -} -pleton = { - \property Voice.pletvisibility = 3 -} -tiny = { - \property Voice.fontsize= "-2" - \pletoff %urg -} - -small = { - \property Voice.fontsize= "-1" -} - -normalsize = { - \property Voice.fontsize= "0" - \pleton %urg -} - -%{ - [urg: try at] temporary grace note hack - the total visible duration of the grace notes must be half - the duration of the 'at' note: e.g.: - - \grace b8 \graceat c4 \ecarg - \grace c16 b16 \graceat c4 \ecarg - -grace = { - \tiny -% it would be so cool not to have to specify these factors each time... -% :-( - \property Voice.pletvisibility = 0 - \[1/16 -} - -graceat = \melodic { - \normalsize - \property Voice.pletvisibility = 0 - \] \[31/32 -} - -ecarg = \melodic { - \property Voice.pletvisibility = 0 - \] - \property Voice.pletvisibility = 3 -} -%} - -normalkey = { - \property Staff.keyoctaviation = 1 -} - -specialkey = { - \property Staff.keyoctaviation = 0 -} - diff --git a/init/scm.ly b/init/scm.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/init/script.ly b/init/script.ly deleted file mode 100644 index 7c96a45122..0000000000 --- a/init/script.ly +++ /dev/null @@ -1,65 +0,0 @@ - -% name = \script { -% indexstring follow_into_staff same_dir_as_stem above_below_staff symbol_can_beinverted priority } -% - -thumb = \script { "thumb" 0 0 1 0 0 } -accent = \script { "sforzato" 0 -1 0 0 0 } -marcato = \script { "marcato" 0 -1 0 1 0 } -staccatissimo = \script { "staccatissimo" 0 -1 0 1 0 } -portato= \script { "portato" 0 -1 0 1 0 } -fermata = \script { "fermata" 0 1 0 1 0 } -stopped = \script { "stopped" 0 0 1 0 0 } -staccato = \script { "staccato" 1 -1 0 0 0 } -tenuto = \script {"tenuto" 1 -1 0 0 0 } -upbow = \script { "upbow" 0 0 1 0 0 } -downbow = \script { "downbow" 0 0 1 0 0 } -lheel = \script { "upedalheel" 0 0 -1 0 0 } -rheel = \script { "dpedalheel" 0 0 1 0 0 } -ltoe = \script { "upedaltoe" 0 0 -1 0 0 } -rtoe = \script { "dpedaltoe" 0 0 1 0 0 } -turn = \script { "turn" 0 0 1 0 0 } -open = \script { "open" 0 0 1 0 0 } -flageolet = \script { "flageolet" 0 0 1 0 0 } -reverseturn = \script { "reverseturn" 0 0 1 0 0 } - - -% could we do without this bloat? -% -lbheel = \script { "bheel" 0 0 -1 0 0 } -rbheel = \script { "bheel" 0 0 1 0 0 } -lbtoe = \script { "btoe" 0 0 -1 0 0 } -rbtoe = \script { "btoe" 0 0 1 0 0 } -lfheel = \script { "fheel" 0 0 -1 0 0 } -rfheel = \script { "fheel" 0 0 1 0 0 } -lftoe = \script { "ftoe" 0 0 -1 0 0 } -rftoe = \script { "ftoe" 0 0 1 0 0 } - -% -% left toe: right heel: -% -% u - -% - u -% ---|-----|-- --|x----|x-- -% ---|-----|-- --|-----|--- -% --x|----x|-- --|-----|--- -% ^ - -% - ^ -% back front back front -% -% -% heu, me thought for a moment that order in table_xxx.ly was -% being translated into priority... -back = \script { "back" 0 -1 -1 0 0 } -front = \script { "front" 0 -1 1 0 0 } - -trill =\script { "trill" 0 0 1 0 - 2000 % be above text. -} - -prall =\script { "prall" 0 0 1 0 0 } -mordent =\script { "mordent" 0 0 1 0 0 } -prallprall =\script { "prallprall" 0 0 1 0 0 } -prallmordent =\script { "prallmordent" 0 0 1 0 0 } -upprall =\script { "upprall" 0 0 1 0 0 } -downprall =\script { "downprall" 0 0 1 0 0 } diff --git a/init/svenska.ly b/init/svenska.ly deleted file mode 100644 index d5422ce646..0000000000 --- a/init/svenska.ly +++ /dev/null @@ -1,86 +0,0 @@ -% -% common Swedish names for notes. "ess" means flat, "iss" means sharp -% -% by Mats Bengtsson. - -\notenames { - cessess = \musicalpitch { -1 0 -2 } - cess = \musicalpitch { -1 0 -1 } - c = \musicalpitch { -1 0 0 } - ciss = \musicalpitch { -1 0 1 } - cississ = \musicalpitch { -1 0 2 } - dessess = \musicalpitch { -1 1 -2 } - dess = \musicalpitch { -1 1 -1 } - d = \musicalpitch { -1 1 0 } - diss = \musicalpitch { -1 1 1 } - dississ = \musicalpitch { -1 1 2 } - essess = \musicalpitch { -1 2 -2 } - ess = \musicalpitch { -1 2 -1 } - e = \musicalpitch { -1 2 0 } - eiss = \musicalpitch { -1 2 1 } - eississ = \musicalpitch { -1 2 2 } - fessess = \musicalpitch { -1 3 -2 } - fess = \musicalpitch { -1 3 -1 } - f = \musicalpitch { -1 3 0 } - fiss = \musicalpitch { -1 3 1 } - fississ = \musicalpitch { -1 3 2 } - gessess = \musicalpitch { -1 4 -2 } - gess = \musicalpitch { -1 4 -1 } - g = \musicalpitch { -1 4 0 } - giss = \musicalpitch { -1 4 1 } - gississ = \musicalpitch { -1 4 2 } - assess = \musicalpitch { -1 5 -2 } - ass = \musicalpitch { -1 5 -1 } - a = \musicalpitch { -1 5 0 } - aiss = \musicalpitch { -1 5 1 } - aississ = \musicalpitch { -1 5 2 } - hessess = \musicalpitch { -1 6 -2 } - b = \musicalpitch { -1 6 -1 } - h = \musicalpitch { -1 6 0 } - hiss = \musicalpitch { -1 6 1 } - hississ = \musicalpitch { -1 6 2 } - - - % - % upper case: 1 octave lower. - % - - - Cessess = \musicalpitch { -2 0 -2 } - Cess = \musicalpitch { -2 0 -1 } - C = \musicalpitch { -2 0 0 } - Ciss = \musicalpitch { -2 0 1 } - Cississ = \musicalpitch { -2 0 2 } - Dessess = \musicalpitch { -2 1 -2 } - Dess = \musicalpitch { -2 1 -1 } - D = \musicalpitch { -2 1 0 } - Diss = \musicalpitch { -2 1 1 } - Dississ = \musicalpitch { -2 1 2 } - Essess = \musicalpitch { -2 2 -2 } - Ess = \musicalpitch { -2 2 -1 } - E = \musicalpitch { -2 2 0 } - Eiss = \musicalpitch { -2 2 1 } - Eississ = \musicalpitch { -2 2 2 } - Fessess = \musicalpitch { -2 3 -2 } - Fess = \musicalpitch { -2 3 -1 } - F = \musicalpitch { -2 3 0 } - Fiss = \musicalpitch { -2 3 1 } - Fississ = \musicalpitch { -2 3 2 } - Gessess = \musicalpitch { -2 4 -2 } - Gess = \musicalpitch { -2 4 -1 } - G = \musicalpitch { -2 4 0 } - Giss = \musicalpitch { -2 4 1 } - Gississ = \musicalpitch { -2 4 2 } - Assess = \musicalpitch { -2 5 -2 } - Ass = \musicalpitch { -2 5 -1 } - A = \musicalpitch { -2 5 0 } - Aiss = \musicalpitch { -2 5 1 } - Aississ = \musicalpitch { -2 5 2 } - Hessess = \musicalpitch { -2 6 -2 } - B = \musicalpitch { -2 6 -1 } - H = \musicalpitch { -2 6 0 } - Hiss = \musicalpitch { -2 6 1 } - Hississ = \musicalpitch { -2 6 2 } - - -} diff --git a/init/table11.ly b/init/table11.ly deleted file mode 100644 index 6df399f5bc..0000000000 --- a/init/table11.ly +++ /dev/null @@ -1,87 +0,0 @@ -% table26.ly -% -% spacing info for LilyPond. Do not edit this. -% It has a lot of hard-wired stringconstants -% - -table_eleven = \symboltables { - - \font "feta11" - - % index symbol #parameters xmin xmax ymin ymax - - "style" = \table { - "bold" "setbold" 1 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "setdynamic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "setfinger" 1 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "setitalic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "setlarge" 1 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "setnumber" 1 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "roman" "settext" 1 0.0\pt 7.5\pt 0.0\pt 10.0\pt - } - - "dynamics" = \table { - - "mf" "dynmf" 0 - "ffffff" "dynffffff" 0 - "fffff" "dynfffff" 0 - "ffff" "dynffff" 0 - "fff" "dynfff" 0 - "ff" "dynff" 0 - "f" "dynf" 0 - - "mp" "dynmp" 0 - "p" "dynp" 0 - "pp" "dynpp" 0 - "ppp" "dynppp" 0 - "pppp" "dynpppp" 0 - "ppppp" "dynppppp" 0 - "pppppp" "dynpppppp" 0 - - "fp" "dynfp" 0 - "sf" "dynsf" 0 - "sff" "dynsff" 0 - "sfz" "dynsfz" 0 - "sp" "dynsp" 0 - "spp" "dynspp" 0 - "rfz" "dynrfz" 0 - - } - "align" = \table { - "-1" "leftalign" 1 - "0" "centeralign" 1 - "1" "rightalign" 1 - } - - - - - "bars" = \table { - "empty" "emptybar" 0 - "" "emptybar" 0 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "maatstreep" 1 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "doublebar" 1 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "finishbar" 1 -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "startbar" 1 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ".|." "fatdoublebar" 1 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|" "repeatbar" 0 -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "startrepeat" 0 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "repeatbarstartrepeat" 0 0.0\pt 20.0\pt 0.0\pt 20.0\pt - } - - "foobar" = \table { - "C" "fourfourmeter" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "allabreve" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - } - - % dims ignored for this table - "param" = \table { - "brace" "pianobrace" 1 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "time_signature" "generalmeter" 2 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "stem" 2 - "fill" "hbox{}" 0 - "rule" "rulesym" 2 - } - -} - diff --git a/init/table13.ly b/init/table13.ly deleted file mode 100644 index 0a38edc99c..0000000000 --- a/init/table13.ly +++ /dev/null @@ -1,83 +0,0 @@ -% table26.ly -% -% spacing info for LilyPond. Do not edit this. -% It has a lot of hard-wired stringconstants -% - -table_thirteen = \symboltables { - - \font "feta13" - - % index symbol #parameters xmin xmax ymin ymax - - "style" = \table { - "bold" "setbold" 1 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "setdynamic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "setfinger" 1 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "setitalic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "setlarge" 1 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "setnumber" 1 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "roman" "settext" 1 0.0\pt 7.5\pt 0.0\pt 10.0\pt - } - - "dynamics" = \table { - - "mf" "dynmf" 0 - "ffffff" "dynffffff" 0 - "fffff" "dynfffff" 0 - "ffff" "dynffff" 0 - "fff" "dynfff" 0 - "ff" "dynff" 0 - "f" "dynf" 0 - - "mp" "dynmp" 0 - "p" "dynp" 0 - "pp" "dynpp" 0 - "ppp" "dynppp" 0 - "pppp" "dynpppp" 0 - "ppppp" "dynppppp" 0 - "pppppp" "dynpppppp" 0 - - "fp" "dynfp" 0 - "sf" "dynsf" 0 - "sff" "dynsff" 0 - "sfz" "dynsfz" 0 - "sp" "dynsp" 0 - "spp" "dynspp" 0 - "rfz" "dynrfz" 0 - - } - "align" = \table { - "-1" "leftalign" 1 - "0" "centeralign" 1 - "1" "rightalign" 1 - } - - "bars" = \table { - "empty" "emptybar" 0 - "" "emptybar" 0 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "maatstreep" 1 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "doublebar" 1 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "finishbar" 1 -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "startbar" 1 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ".|." "fatdoublebar" 1 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|" "repeatbar" 0 -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "startrepeat" 0 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "repeatbarstartrepeat" 0 0.0\pt 20.0\pt 0.0\pt 20.0\pt - } - - "time_signatures" = \table { - "C" "fourfourmeter" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "allabreve" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - } - - % dims ignored for this table - "param" = \table { - "brace" "pianobrace" 1 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "time_signature" "generalmeter" 2 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "stem" 2 - "fill" "hbox{}" 0 - "rule" "rulesym" 2 - } -} - diff --git a/init/table16.ly b/init/table16.ly deleted file mode 100644 index a5b4122c2b..0000000000 --- a/init/table16.ly +++ /dev/null @@ -1,86 +0,0 @@ -% table16.ly -% -% spacing info for LilyPond. Do not edit this if you're not a guru. -% It has a lot of hard-wired stringconstants -% - - -table_sixteen= -\symboltables { - \font "feta16" - - % index symbol #parameters xmin xmax ymin ymax - - "style" = \table { - "bold" "setbold" 1 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "setdynamic" 1 0.0\pt 0.0\pt 0.0\pt 8.0\pt - "finger" "setfinger" 1 0.0\pt 2.0\pt 0.0\pt 4.0\pt - "italic" "setitalic" 1 0.0\pt 4.\pt 0.0\pt 8.0\pt - "typewriter" "settypewriter" 1 0.0\pt 4.\pt 0.0\pt 8.0\pt - "large" "setlarge" 1 0.0\pt 9.50\pt 0.0\pt 10.0\pt - "number" "setnumber" 1 0.0\pt 6.0\pt 0.0\pt 8.0\pt - "number-1" "setnumber-1" 1 0.0\pt 4.0\pt 0.0\pt 5.0\pt - "roman" "settext" 1 0.0\pt 4.5\pt 0.0\pt 8.0\pt - } - "dynamics" = \table { - - "mf" "dynmf" 0 - "ffffff" "dynffffff" 0 - "fffff" "dynfffff" 0 - "ffff" "dynffff" 0 - "fff" "dynfff" 0 - "ff" "dynff" 0 - "f" "dynf" 0 - - "mp" "dynmp" 0 - "p" "dynp" 0 - "pp" "dynpp" 0 - "ppp" "dynppp" 0 - "pppp" "dynpppp" 0 - "ppppp" "dynppppp" 0 - "pppppp" "dynpppppp" 0 - - "fp" "dynfp" 0 - "sf" "dynsf" 0 - "sff" "dynsff" 0 - "sfz" "dynsfz" 0 - "sp" "dynsp" 0 - "spp" "dynspp" 0 - "rfz" "dynrfz" 0 - - } - "align" = \table { - "-1" "leftalign" 1 - "0" "centeralign" 1 - "1" "rightalign" 1 - } - - - "bars" = \table { - "empty" "emptybar" 0 - "" "emptybar" 0 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "maatstreep" 1 0.0\pt 0.64\pt 0.0\pt 16.0\pt - "||" "doublebar" 1 0.0\pt 4.0\pt 0.0\pt 16.0\pt - "|." "finishbar" 1 -4.0\pt 0.0\pt 0.0\pt 16.0\pt - ".|" "startbar" 1 0.0\pt 4.0\pt 0.0\pt 16.0\pt - ".|." "fatdoublebar" 1 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|" "repeatbar" 0 -8.0\pt 0.0\pt 0.0\pt 16.0\pt - "|:" "startrepeat" 0 0.0\pt 8.0\pt 0.0\pt 16.0\pt - ":|:" "repeatbarstartrepeat" 0 0.0\pt 16.0\pt 0.0\pt 16.0\pt - - } - - % dims ignored for this table - "param" = \table { - "brace" "pianobrace" 1 0.0\pt 0.0\pt 32.0\pt 112.0\pt - "bracket" "staffbracket" 1 0.0\pt 4.0\pt 16.0\pt 128.0\pt - "extender" "extender" 1 0.0\pt 0.0\pt 1.0\pt 160.0\pt - "time_signature" "generalmeter" 2 0.0\pt 10.0\pt -8.0\pt 8.0\pt - "rule" "rulesym" 2 - "stem" "stem" 2 - "fill" "hbox{}" 0 - } - - -} - diff --git a/init/table20.ly b/init/table20.ly deleted file mode 100644 index 0a1067cc0f..0000000000 --- a/init/table20.ly +++ /dev/null @@ -1,89 +0,0 @@ -% table20.ly -% -% spacing info for LilyPond. Do not edit this. -% It has a lot of hard-wired stringconstants -% - -table_twenty = -\symboltables { - - \font "feta20" - - % index symbol #parameters xmin xmax ymin ymax - - "style" = \table { - "bold" "setbold" 1 0.0\pt 5.50\pt 0.0\pt 10.0\pt - "dynamic" "setdynamic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "setfinger" 1 0.0\pt 4.5\pt 0.0\pt 5.0\pt - "typewriter" "settypewriter" 1 0.0\pt 5.5\pt 0.0\pt 10.0\pt - "italic" "setitalic" 1 0.0\pt 5.5\pt 0.0\pt 10.0\pt - "large" "setlarge" 1 0.0\pt 6.50\pt 0.0\pt 12.0\pt - "Large" "setLarge" 1 0.0\pt 6.50\pt 0.0\pt 12.0\pt - "mark" "setmark" 1 0.0\pt 6.50\pt 0.0\pt 12.0\pt - "number" "setnumber" 1 0.0\pt 8.0\pt 0.0\pt 10.0\pt - "number-1" "setnumber-1" 1 0.0\pt 6.0\pt 0.0\pt 7.0\pt - "roman" "settext" 1 0.0\pt 5.6\pt 0.0\pt 10.0\pt - } - - "dynamics" = \table { - - "mf" "dynmf" 0 - "ffffff" "dynffffff" 0 - "fffff" "dynfffff" 0 - "ffff" "dynffff" 0 - "fff" "dynfff" 0 - "ff" "dynff" 0 - "f" "dynf" 0 - - "mp" "dynmp" 0 - "p" "dynp" 0 - "pp" "dynpp" 0 - "ppp" "dynppp" 0 - "pppp" "dynpppp" 0 - "ppppp" "dynppppp" 0 - "pppppp" "dynpppppp" 0 - - "fp" "dynfp" 0 - "sf" "dynsf" 0 - "sff" "dynsff" 0 - "sfz" "dynsfz" 0 - "sp" "dynsp" 0 - "spp" "dynspp" 0 - "rfz" "dynrfz" 0 - - } - "align" = \table { - "-1" "leftalign" 1 - "0" "centeralign" 1 - "1" "rightalign" 1 - } - - - - - "bars" = \table { - "empty" "emptybar" 0 - "" "emptybar" 0 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "maatstreep" 1 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "doublebar" 1 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "finishbar" 1 -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "startbar" 1 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ".|." "fatdoublebar" 1 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|" "repeatbar" 0 -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "startrepeat" 0 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "repeatbarstartrepeat" 0 0.0\pt 20.0\pt 0.0\pt 20.0\pt - } - - % dims ignored for this table - "param" = \table { - "bracket" "staffbracket" 1 0.0\pt 0.0\pt 20.0\pt 160.0\pt - "extender" "extender" 1 0.0\pt 0.0\pt 1.0\pt 160.0\pt - "rule" "rulesym" 2 - "brace" "pianobrace" 1 0.0\pt 0.0\pt 40.0\pt 140.0\pt - "time_signature" "generalmeter" 2 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "stem" 2 - "fill" "hbox{}" 0 - } - -} - diff --git a/init/table26.ly b/init/table26.ly deleted file mode 100644 index 90b9313208..0000000000 --- a/init/table26.ly +++ /dev/null @@ -1,86 +0,0 @@ -% table26.ly -% -% spacing info for LilyPond. Do not edit this. -% It has a lot of hard-wired stringconstants -% - -table_twentysix = \symboltables { - - \font "feta26" - - % index symbol #parameters xmin xmax ymin ymax - - "style" = \table { - "bold" "setbold" 1 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "setdynamic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "setfinger" 1 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "setitalic" 1 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "setlarge" 1 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "setnumber" 1 0.0\pt 8.0\pt 0.0\pt 10.0\pt - "roman" "settext" 1 0.0\pt 7.5\pt 0.0\pt 10.0\pt - } - - "dynamics" = \table { - - "mf" "dynmf" 0 - "ffffff" "dynffffff" 0 - "fffff" "dynfffff" 0 - "ffff" "dynffff" 0 - "fff" "dynfff" 0 - "ff" "dynff" 0 - "f" "dynf" 0 - - "mp" "dynmp" 0 - "p" "dynp" 0 - "pp" "dynpp" 0 - "ppp" "dynppp" 0 - "pppp" "dynpppp" 0 - "ppppp" "dynppppp" 0 - "pppppp" "dynpppppp" 0 - - "fp" "dynfp" 0 - "sf" "dynsf" 0 - "sff" "dynsff" 0 - "sfz" "dynsfz" 0 - "sp" "dynsp" 0 - "spp" dynspp" 0 - "rfz" "dynrfz" 0 - - } - "align" = \table { - "-1" "leftalign" 1 - "0" "centeralign" 1 - "1" "rightalign" 1 - } - - - - - "bars" = \table { - "empty" "emptybar" 0 - "" "emptybar" 0 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "maatstreep" 1 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "doublebar" 1 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "finishbar" 1 -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "startbar" 1 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ".|." "fatdoublebar" 1 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|" "repeatbar" 0 -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "startrepeat" 0 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "repeatbarstartrepeat" 0 0.0\pt 20.0\pt 0.0\pt 20.0\pt - } - - "meters" = \table { - "C" "fourfourmeter" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "allabreve" 0 0.0\pt 10.0\pt -5.0\pt 5.0\pt - } - - % dims ignored for this table - "param" = \table { - "brace" "pianobrace" 1 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "time_signature" "generalmeter" 2 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "stem" 2 - "fill" "hbox{}" 0 - "rule" "rulesym" 2 - } -} - diff --git a/input/GNUmakefile b/input/GNUmakefile index 26dc6aee1a..4b8cc939e9 100644 --- a/input/GNUmakefile +++ b/input/GNUmakefile @@ -4,7 +4,7 @@ depth = .. SUBDIRS=test bugs -examples=praeludium-fuga-E twinkle-pop star-spangled-banner +examples=praeludium-fuga-E star-spangled-banner flexamples= LOCALSTEPMAKE_TEMPLATES=mutopia diff --git a/input/bugs/auto-beam.ly b/input/bugs/auto-beam.ly new file mode 100644 index 0000000000..622efcc3b7 --- /dev/null +++ b/input/bugs/auto-beam.ly @@ -0,0 +1,21 @@ +\score{ + \notes \relative c''{ + \time 2/4; + c8 + \repeat 2 { % \bar "|:" iknoort-i ook... + c8 c8 + } + c8 + } + \paper{ + \translator{ + \VoiceContext + % add experimental auto-beaming + \consists Auto_beam_engraver; + beamAuto = 1.; + beamAutoEnd8 = "1/4"; + beamAutoEnd16 = "1/4"; + beamAutoEnd32 = "1/4"; + } + } +} diff --git a/input/bugs/mats.ly b/input/bugs/mats.ly new file mode 100644 index 0000000000..6409937008 --- /dev/null +++ b/input/bugs/mats.ly @@ -0,0 +1,78 @@ + +corI=\notes\relative c'' { +\key c; + +[g8. \f ( a16 ] ) g2 | +[g8. ( a16 ] ) g2_"dim." | +c2. \p ( | +) g2 g4 ( | +) c2. ( | +) g4 [g8. ( a16 ] ) g4 | +c2. \p ( | +) g2 g4 | +c2 \< ( ~ [ \! c8 \> \! ) g ] | +g2 \p r4 | +g \mf ( d' c~ | +c ) b r | +R2. | +} + +corII=\notes\relative c'' { +\key c; +\time 3/4; + +R2.*19 | +r4 r [g8^"solo" \p (\< \! ) e'] | +g2 \> ( [e8. ) \! c16 ] | % grace note e8 () g2 +g2 r 4 | +r r \times 2/3 {[e'8 \p ( g, ) g' ]} | +g4 \> () \! e r | +r r \times 2/3 {[g8 \p ( e ) g ]} | +d4 \> () \! g r | +r r [g,16 ( \p d' e d ] | +) g,4 r r | +R2. | +r4 r c \p ( | +) g r r | +g [g8. ( a16 ] ) g4 | +R2. | +r4 r [g8^""^"solo" \mf \< () \! e' ] | +g2 \> [ \! e8. ( c16 ] | +) g2 r4 | +R2. | +r4 r \times 2/3 {[e'8 \f ( g, ) g'] } | +g4 () e r | +r r \times 2/3 {[g8 \f ( e ) g] } +d4 () g r | +r r [d16 \f ( g, e' d ] | +[g, d' e ) d ] g,4 r | +r d'2 \f \> ( | % grace note g8 d2 +[g,8. a16 g8. a16 \! g8. ) a16 ] | +g4 r r | +} + +trpI=\notes\relative c'' { +\key c; +\time 3/4; + +R2.*30 | +} + +\score{ < + \type StaffGroup = brass < + \type Staff = cor < + \type Voice = corI { \stemup \corI } + \type Voice = corII { \stemdown \corII } + > + \type Staff = trp < + \type Voice = trpI { \stemup \trpI } + > + > +> + \paper { + \translator {\OrchestralScoreContext + % The following line causes a SIGSEGV + \consists "Multi_measure_rest_engraver"; + } + } +} diff --git a/input/bugs/partial.ly b/input/bugs/partial.ly new file mode 100644 index 0000000000..af915328a6 --- /dev/null +++ b/input/bugs/partial.ly @@ -0,0 +1,16 @@ +\score{ + \notes \relative c''{ + \time 4/4; + c4 c c c + \partial 4*3; + c c c + \repeat 2 { + \partial 4; + c + c c c c + \partial 4*3; + c c c + } + } + \paper{ } +} diff --git a/input/opus-130.ly b/input/opus-130.ly index 7ce7cf7a9a..0bb12e66c0 100644 --- a/input/opus-130.ly +++ b/input/opus-130.ly @@ -10,61 +10,65 @@ copyright = "public domain"; % \version "1.0.14"; -global = \notes { - \key g; - \time 3/8; - \skip 4.*8; -% 1.1.9 broken -% \bar ":|"; -} - tempi = \notes { \property Voice.textstyle = "large" s8^"Allegro assai" } dynamics = \notes { - \type Voice=i s8\p\< \!s8.\> \!s16 | s4.\p | s8\< s8. \!s16 | s4.\p | s8\p\< \!s8.\> \!s16 | s4.\p | s8\< s8. \!s16 | s4.\p | } +global = \notes { + \key g; + \time 3/8; + < + \dynamics + \repeat 2 { s4.*8 } + > +} + violinei = \notes\relative c''{ - \type Voice=i - [d8(b)d16] r | g,4. | [a16(b c8)e16] r | g,8~fis4 | - [d''8(b)d16] r | g,4. | [a16(b c8)fis,16] r | fis8~g4 | + d8(b)d16 r | g,4. | a16(b c8)e16 r | g,8~fis4 | + d''8(b)d16 r | g,4. | a16(b c8)fis,16 r | fis8~g4 } violineii = \notes\relative c'{ - \type Voice=i - [b8(d)b] | [e(g,)e'] | [e(c)a'] | [a(c)a] | + b8(d)b | e(g,)e' | e(c)a' | a(c)a | % copy from violinei: 5-8 - [d8(b)d16] r | g,4. | [a16( b c8)fis,16] r | fis8~g4 | + d8(b)d16 r | g,4. | a16( b c8)fis,16 r | fis8~g4 } viola = \notes\relative c'{ - \type Voice=i \clef "alto"; - [g8(b)g] | [b(e,)b'] | [c,(a')c,] | [c'(d,)c'] | [b(d)b] | - [e(g,)e'] | [e(e,<)a' c,>] | <[a(c,> )b,] | + g8(b)g | b(e,)b' | c,(a')c, | c'(d,)c' | b(d)b | + e(g,)e' | e(e,<)a' c,> | < a(c,> )b, } cello = \notes\relative c'{ - \type Voice=i \clef "bass"; - g4 r8 | e'4 r8 | c4 r8 | d4 r8 | [g,,8 b g] | [b(e,)b'] | - [c,(a')d,] | [d'(d,)g] | + g4 r8 | e'4 r8 | c4 r8 | d4 r8 | g,,8 b g | b(e,)b' | + c,(a')d, | d'(d,)g } \score{ \type StaffGroup < - \type Staff = i < \tempi \global \dynamics \violinei > - \type Staff = ii < \global \dynamics \violineii > - \type Staff = iii < \global \dynamics \viola > - \type Staff = iv < \global \dynamics \cello > +% broken, 1.1.23 +% \type Staff = i < \tempi \global \violinei > + \type Staff = i < \global \violinei > + \type Staff = ii < \global \violineii > + \type Staff = iii < \global \viola > + \type Staff = iv < \global \cello > > \paper{ \translator { \OrchestralScoreContext } + \translator { + \VoiceContext + \consists Auto_beam_engraver; + beamAuto = 1.; + beamAutoEnd = "3/8"; + } } \midi{ \tempo 4 = 160; } } diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly index f3312161d4..d05c396cfa 100644 --- a/input/star-spangled-banner.ly +++ b/input/star-spangled-banner.ly @@ -14,46 +14,46 @@ copyright="public domain"; } $staff1_voice_1 = \notes { - [a8.()fis16] - \repeat 2 { d4 fis4 a4 d'2 [fis'8. e'16] d'4 fis4 gis4 a2 [a8 a8] - fis'4. e'8 d'4 cis'2 [b8. cis'16] d'4 d'4 a4 } - \alternative { { fis4 d4 [a8. fis16] } { fis4 d4 [fis'8. fis'16] } } - fis'4 g'4 a'4 a'2 [g'8 fis'8] e'4 fis'4 - g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 [b8. cis'16] d'4 fis4 gis4 a2 a4 - d'4 d'4 [d'8()cis'8] b4 b4 b4 e'4 [g'8 ()fis'8] [e'8()d'8] - d'4~cis'4 [a8. a16] d'4.~e'8 [fis'8 g'8] a'2 [d'8 e'8] fis'4. g'8 + a8.()fis16 + \repeat 2 { d4 fis4 a4 d'2 fis'8. e'16 d'4 fis4 gis4 a2 a8 a8 + fis'4. e'8 d'4 cis'2 b8. cis'16 d'4 d'4 a4 } + \alternative { { fis4 d4 a8. fis16 } { fis4 d4 fis'8. fis'16 } } + fis'4 g'4 a'4 a'2 g'8 fis'8 e'4 fis'4 + g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 b8. cis'16 d'4 fis4 gis4 a2 a4 + d'4 d'4 d'8()cis'8 b4 b4 b4 e'4 g'8 ()fis'8 e'8()d'8 + d'4~cis'4 a8. a16 d'4.~e'8 fis'8 g'8 a'2 d'8 e'8 fis'4. g'8 e'4 d'2 s4 } $staff1_voice_2 = \notes { - [a8.()fis16] - \repeat 2 { a,4 d4 e4 d4~fis4 [fis8. fis16] fis4 d4 d4 cis2 - [e8 e8] a4. a8 a4 a2 [a8. a16] a4 a4 a4 } - \alternative { { fis4 d4 [a8. fis16] } { fis4 d4 r4 } } - a4 a4 d'4 d'2 [a8 a8] cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2 - [a8. a16] d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 [g8()dis8] e4 e2 - [e8. e16] d4.~a8 [a8 a8] a2 [g8 g8] a4. a8 g4 fis2 s4 + a8.()fis16 + \repeat 2 { a,4 d4 e4 d4~fis4 fis8. fis16 fis4 d4 d4 cis2 + e8 e8 a4. a8 a4 a2 a8. a16 a4 a4 a4 } + \alternative { { fis4 d4 a8. fis16 } { fis4 d4 r4 } } + a4 a4 d'4 d'2 a8 a8 cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2 + a8. a16 d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 g8()dis8 e4 e2 + e8. e16 d4.~a8 a8 a8 a2 g8 g8 a4. a8 g4 fis2 s4 } $staff2_voice_1 = \notes { r4 - \repeat 2 { fis4 a4 a4 b2 [cis'8. cis'16] b4 b4 b4 a2 [cis'8 cis'8] - d'4. cis'8 d'4 e'2 [e'8. e'16] d'4 d'4 a4 } - \alternative { { fis4 d4 r4 } { fis4 d4 r4 } } - d4 e4 fis4 fis'2 [e'8 d'8] e'4 e'4 e'4 e'2 cis'4 d'4. cis'8 d'4 e'2 - [e'8. e'16] a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2 - [cis'8. cis'16] a4.~cis'8 [d'8 d'8] d'2 [d'8 d'8] d'4. d'8 cis'4 + \repeat 2 { fis4 a4 a4 b2 cis'8. cis'16 b4 b4 b4 a2 cis'8 cis'8 + d'4. cis'8 d'4 e'2 e'8. e'16 d'4 d'4 a4 } + \alternative { { fis4 d4 r4 } { fis4 d4 r4 } } + d4 e4 fis4 fis'2 e'8 d'8 e'4 e'4 e'4 e'2 cis'4 d'4. cis'8 d'4 e'2 + e'8. e'16 a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2 + cis'8. cis'16 a4.~cis'8 d'8 d'8 d'2 d'8 d'8 d'4. d'8 cis'4 a2 s4 } $staff2_voice_2 = \notes { r4 - \repeat 2 { d4 d4 cis4 b,2 [ais,8. ais,16] b,4 b,4 e4 a,2 [a8 a8] - d4. e8 [fis8 g8] a2 [g8. g16] fis4 fis4 a4 } + \repeat 2 { d4 d4 cis4 b,2 ais,8. ais,16 b,4 b,4 e4 a,2 a8 a8 + d4. e8 fis8 g8 a2 g8. g16 fis4 fis4 a4 } \alternative { { fis4 d4 r4 } { fis4 d4 r4 } } - d4 d4 d4 d2 [d8 d8] a4 a4 a4 a2 a,4 d4. e8 [fis8 g8] a2 [g8. g16] - fis4 d4 e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 [e8()fis8] [g8()gis8] a2 - [g8. g16] fis4.~a,8 [d8 e8] fis2 [b8 b8] a4. a8 a,4 d2 s4 + d4 d4 d4 d2 d8 d8 a4 a4 a4 a2 a,4 d4. e8 fis8 g8 a2 g8. g16 + fis4 d4 e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 e8()fis8 g8()gis8 a2 + g8. g16 fis4.~a,8 d8 e8 fis2 b8 b8 a4. a8 a,4 d2 s4 } $text = \lyrics{ @@ -62,9 +62,8 @@ $text = \lyrics{ { say. can you see,2 by8. the16 dawn's4 ear- ly light2 What8 so8 proud-4. ly8 we4 hailed,2 At8. the16 twi-4 light's last gleam- ing. Whose8. broad16 } - % urg, lyric chords broken: 1.1.22 -% { stripes4 and bright stars,2 through8. the16 per-4 il- ous fight,2 -% O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly } + { stripes4 and bright stars,2 through8. the16 per-4 il- ous fight,2 + O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly } > stream-4 ing. And8. the16 rock-4 ets' red glare,2 the8 bombs8 burst-4 ing in air,2 gave4 proof4. through8 the4 night2 that8. @@ -99,6 +98,7 @@ global = \notes { \type Staff=staffB < \global \clef bass; + \property Staff.voltaVisibility = "0" {\voiceone \$staff2_voice_1 } {\voicetwo \$staff2_voice_2 } > @@ -108,11 +108,18 @@ global = \notes { textheight = 230.\mm; linewidth= 180.\mm; \translator { - \GrandStaffContext - \accepts "Lyrics"; + \GrandStaffContext + \accepts "Lyrics"; } \translator { - \BarNumberingStaffContext + \BarNumberingStaffContext + } + \translator{ + \VoiceContext + \consists Auto_beam_engraver; + beamAuto = 1.; + beamAutoEnd8 = "1/4"; + beamAutoEnd16 = "1/4"; } } } diff --git a/input/test/auto-beam.ly b/input/test/auto-beam.ly new file mode 100644 index 0000000000..02e7711dba --- /dev/null +++ b/input/test/auto-beam.ly @@ -0,0 +1,49 @@ +%{ + Currently (1.1.22.jcn5), the auto-beam engraver will only engrave + sensible beams (hopefully), which means that it will give up the + whole beam if: + * a rest is encountered + * another beam (entered manually) is encountered + * there's a 'gap' in the beam note's durations + + There's no smart algorithm, beginning a beam is considered when + + now / beamAutoBegin = 0 + + the beam will be ended when + + * now / beamAutoEnd = 0 +%} + +\score{ + \notes \relative c''{ + \time 2/4; + % one beam per measure + c8 c c c + c16 c c c c c c c + % from here on two beams per measure + \property Voice.beamAutoEnd = "1/4"; + c8 c c c + % manually override autobeam with weird beaming + c8 [c c] c + c8 c c r + c8 c c4 + r8 c c c + % no autobeaming + \property Voice.beamAuto = "0" + c8 c c c + } + \paper{ + \translator{ + \VoiceContext + % add experimental auto-beaming + \consists Auto_beam_engraver; + % switch it on (perhaps a bit double, but we want to be able + % to switch it off conveniently + beamAuto = 1.; + % consider starting beam at every 4 note + % beamAutoBegin = "1/4"; + beamAutoEnd = "1/2"; + } + } +} diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly index 90d842fd08..d618a2073f 100644 --- a/input/test/bar-scripts.ly +++ b/input/test/bar-scripts.ly @@ -1,7 +1,5 @@ - - -\version "1.0.14"; + \version "1.0.14"; onestaff = \type Staff = foo\notes { \property Staff.instr = instr @@ -18,10 +16,9 @@ grstaff = \notes \type GrandStaff < \type Staff = bufl { c1 c2 } > -scpaper = \paper {\translator {\OrchestralScoreContext}} - +scpaper = \paper {\translator {\OrchestralScoreContext}} +stpaper = \paper{ \translator {\BarNumberingStaffContext }} -stpaper =\paper{ \BarNumberingStaffContext } scscore = \score { \grstaff \paper { \scpaper }} @@ -31,5 +28,5 @@ stscore = \score { \onestaff \paper { \stpaper }} -\score {\stscore} -%\score {\scscore} +%\score {\stscore} +\score {\scscore} diff --git a/input/test/beam-interstaff.ly b/input/test/beam-interstaff.ly index d09e796c21..69cc8dde4e 100644 --- a/input/test/beam-interstaff.ly +++ b/input/test/beam-interstaff.ly @@ -26,6 +26,6 @@ minVerticalAlign = 3.0*\staffheight; maxVerticalAlign = 3.0*\staffheight; } - linewidth=-1.; +% linewidth=-1.; } } diff --git a/input/test/c.ly b/input/test/c.ly deleted file mode 100644 index 3067d98957..0000000000 --- a/input/test/c.ly +++ /dev/null @@ -1,51 +0,0 @@ -\version "1.0.14"; - -%{ -Would this be acceptable/good enough/convenient for entry? - - Convention/Standard Lily - - C# cis - Cb ces - Cm; Cmin c3-; c m; c min - Caug c5+; c aug; - Cdim c5-; c dim - Cmaj7 c7+; c maj - C7 c7 - Csus; Csus4 c4; c sus -%} - -scales = \notes\transpose c''\chords{ - - @1c m @c min @4c dim @c aug @c sus @c maj - @1c6 @4c7 @c9 @c11 @c13 - @1c @g @d @a @e @b @fis - @1c @f @bes @es @as @des @ges - } - -keys = \notes{ - s1 - s1 s1 s1 - s1 s1 - s1 - \key g; s1 - \key d; s1 - \key a; s1 - \key e; s1 - \key b; s1 - \key fis; s1 - \key c; s1 - \key f; s1 - \key bes; s1 - \key es; s1 - \key as; s1 - \key des; s1 - \key ges; s1 - } - -\score{ - < - \type ChordNames \scales - \type Staff < \scales \keys > - > -} diff --git a/input/test/chords.ly b/input/test/chords.ly index 84f1511fa1..1133280d3f 100644 --- a/input/test/chords.ly +++ b/input/test/chords.ly @@ -19,6 +19,8 @@ scales = \notes \transpose c'' \chords{ % c1-m c-min c4-dim c-aug c-sus c-maj c1-6 c4-7 c-9 c-11 c-13 + c1-7^5 c-13^5^7^9^11 + % c1-7^5 c-13^5 c1 g d a e b fis c1 f bes es as des ges } diff --git a/input/test/harmonics.fly b/input/test/harmonics.fly deleted file mode 100644 index 59d8925dc9..0000000000 --- a/input/test/harmonics.fly +++ /dev/null @@ -1,8 +0,0 @@ -% this should be normal notes: -c'1 | d2 d | e4 e - -% and this should be harmonics: -\property Voice.noteheadStyle = "harmonic" -e8 e e16 e e e32 e - - diff --git a/input/test/mark.ly b/input/test/mark.ly index a054b62147..160e6c05fe 100644 --- a/input/test/mark.ly +++ b/input/test/mark.ly @@ -22,7 +22,9 @@ two = \notes\relative c{ \paper { \translator { \OrchestralPartStaffContext markScriptPadding = "4.0"; -% markDirection = \down; + markHangOn = "Bar"; + markHangDepth = "1"; +% markDirection = \diown; } } } diff --git a/input/test/notemode-chords.ly b/input/test/notemode-chords.ly new file mode 100644 index 0000000000..6ccc59d69d --- /dev/null +++ b/input/test/notemode-chords.ly @@ -0,0 +1,8 @@ +\version "1.0.15"; + +\score{ + \notes \transpose c''{ + @c1@ @c-7@ @c-7^5@-1-3 + } + +} diff --git a/input/test/rep.ly b/input/test/rep.ly index d5af51806e..2b79795ecc 100644 --- a/input/test/rep.ly +++ b/input/test/rep.ly @@ -3,8 +3,12 @@ \type Staff \notes\relative c'{ c4 d e f \repeat 2 { g a b c } - \alternative { { c b a g } { f e d c } } - c c c c +% \alternative { { c b a g } { f e d c } } c c c c + \alternative { { c b a g } { f e d c } { c d e f } } + g g g g + \repeat 2 { c c c c } + \repeat 2 { c c c c } + g g g g } > } diff --git a/input/test/repeat.ly b/input/test/repeat.ly index 7abd8c0b8c..914b665f96 100644 --- a/input/test/repeat.ly +++ b/input/test/repeat.ly @@ -1,13 +1,18 @@ \score{ < \type Staff \notes\relative c'{ - c4 d e f + c d e f \repeat 2 { g a b c } -% \alternative { { c b a g } { f e d c } } c c c c - \alternative { { c b a g } { f e d c } { c d e f } } - g g g g - \repeat 2 { c c c c } - \repeat 2 { c c c c } + \alternative { { c b a g } { f e d c } } + } + \type Lyrics \lyrics { + De eer- ste < { maat } { moet } > + \repeat 2 { } + \alternative < + { en dan twee keer } + { een koe- plet _ } + > + en dan nog dit er ach- ter aan } > } diff --git a/input/test/tchaikovsky.ly b/input/test/tchaikovsky.ly deleted file mode 100644 index 78afbe96ed..0000000000 --- a/input/test/tchaikovsky.ly +++ /dev/null @@ -1,43 +0,0 @@ -\header{ -filename = "tchaikovsky.ly"; -title = "Extracts from 6th symphony"; -subtitle = "Ist movement"; -composer= "Pjotr Iljitsj Tchaikovsky"; -enteredby = "Maarten Storm"; -instrument= "Violoncello"; -} - -\version "1.0.14"; - -% this is an example of extreme dynamics - -% adagio mosso - 7 measures before Allegro vivo -\score{ - \notes - \relative c{ - \clef "bass"; - \key D; - | ~ r8 r4 | - a2\ppp\cr a2\rc\p\decr | ~ r8 r4 | - a2\pppp ~ a8 r8 r4 | a2\ppppp ~ a8 r8 r4 | r4 a8_"pizz" - r8 r2^\fermata - } - \header{ - piece="example 1"; - } -} - -% 8 measures before Andante come prima -\score{ - \notes - \relative c{ - \clef "bass"; - \key C; - | | - ~ ~ | - } - \header{ - piece="example 2"; - } -} - diff --git a/input/twinkle.ly b/input/twinkle.ly index a49a5ff398..82a509a8a1 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -1,10 +1,9 @@ \header{ -filename = "twinkle.ly"; -title = "Twinkle Twinkle Little Star"; - -composer = "Traditional"; -enteredby = "HWN & JCN"; -copyright = "public domain"; +filename = "twinkle.ly"; +title = "Twinkle Twinkle Little Star"; +composer = "Traditional"; +enteredby = "hwn and jcn"; +copyright = "public domain"; } %{ @@ -17,7 +16,7 @@ traditional song in various languages. %} %{ -Tested Features: lyrics, interleaving lyrics and staffs +Tested Features: lyrics, interleaving lyrics and staffs, repeats %} \version "1.0.14"; @@ -55,11 +54,6 @@ global = \notes { tekst = \lyrics{ Al-4 tijd is Kort- jak- je ziek,2 midden4 in_de week maar s,_zon- dags niet.2 -% ugly hack: insertion of empty syllables creates columns on extra -% moments. The net result is more spacing. -% -% probably not necessary anymore -% midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2 s,_Zon-4 dags gaat ze naar de kerk,2 met4 een boek vol zil- ver werk.2 Al-4 tijd is Kort- jak- je ziek,2 @@ -121,45 +115,17 @@ textiii = \lyrics{ How4 I won- der what you are!2 } -$top_lyrics = \type Lyrics = top < - \tekst -> - -$treble_staff = \type Staff = treble < - \global - \melody -> - -$bass_staff = \type Staff = bass < - \global - \accompany -> - -$middle_lyrics = \type Lyrics = middle < - \texte -> - -$bottom_lyrics = \type Lyrics = bottom < -% \global - \texti - \textii - \textiii -> - -$grand_staff = \type GrandStaff < - \$treble_staff - \$middle_lyrics - \$bass_staff -> - \score{ - \repeat 2 { < - \$treble_staff - \$middle_lyrics - \$top_lyrics - \$grand_staff - \$bottom_lyrics - > } + < + \type Staff=i \repeat 2 < \global\melody > + \type Lyrics=top \repeat 2 {} \alternative < \tekst \texte > + \type GrandStaff < + \type Staff=ii \repeat 2 < \global\melody > + \type Staff=iii \repeat 2 < \global\accompany > + > + \type Lyrics=bottom \repeat 3 {} + \alternative < \texti \textii \textiii > + > \paper{ gourlay_maxmeasures = 14.0; } diff --git a/lib/binary-source-file.cc b/lib/binary-source-file.cc index 17a712fa81..951f3a746e 100644 --- a/lib/binary-source-file.cc +++ b/lib/binary-source-file.cc @@ -61,3 +61,36 @@ Binary_source_file::line_i (char const* pos_ch_C) const return pos_ch_C - ch_C (); } +U8 +Binary_source_file::get_U8 () +{ + return *(U8*)forward_ch_C (1); +} + + +U16 +Binary_source_file::get_U16 () +{ + U16 b; + + b = get_U8 () << 8; + b |= get_U8 (); + + return b; +} + + +U32 +Binary_source_file::get_U32() +{ + U32 b; + + b = get_U8 () << 24; + b |= get_U8 () << 16; + b |= get_U8 () << 8; + b |= get_U8 (); + + return b; +} + + diff --git a/lib/include/binary-source-file.hh b/lib/include/binary-source-file.hh index 59c35b6a83..ee59497890 100644 --- a/lib/include/binary-source-file.hh +++ b/lib/include/binary-source-file.hh @@ -14,9 +14,9 @@ public: Binary_source_file (String& filename_str ); virtual ~Binary_source_file (); - U8 get_U8 () { return *(U8*)forward_ch_C (1); } - U16 get_U16 () { return *(U16*)forward_ch_C (2); } - U32 get_U32 () { return *(U32*)forward_ch_C (4); } + U8 get_U8 (); + U16 get_U16 (); + U32 get_U32 (); Byte get_Byte () {return get_U8 (); } int get_int () { return get_U32 (); } diff --git a/lib/warn.cc b/lib/warn.cc index afc6f7b9ce..ecb97a5f75 100644 --- a/lib/warn.cc +++ b/lib/warn.cc @@ -4,26 +4,26 @@ void error (String s) { - cerr << _ ("error: ") << s << '\n'; + cerr << _ ("error: ") << s << '\n'; - exit (1); + exit (1); } void non_fatal_error (String s) { - cerr << _ ("error: ") << s << '\n'; + cerr << _ ("error: ") << s << '\n'; } void warning (String m) { - cerr << _ ("warning: ") <=0) + { + return char_metrics_[code]; + } + else if (warn ) + { + warning (_f ("can't find character number %d", a)); + } + return dummy_static_char_metric; +} diff --git a/lily/all-font-metrics.cc b/lily/all-font-metrics.cc new file mode 100644 index 0000000000..e01062ba33 --- /dev/null +++ b/lily/all-font-metrics.cc @@ -0,0 +1,77 @@ +#include "pointer.hh" +#include "main.hh" +#include "all-fonts.hh" +#include "debug.hh" +#include "warn.hh" +#include "afm.hh" +#include "tfm.hh" + +const char * default_font_sz_ = "cmr10"; + + + +All_font_metrics::All_font_metrics (String path) +{ + search_path_.parse_path (path); +} + + +Adobe_font_metric * +All_font_metrics::find_afm (String name) +{ + if (!afm_p_dict_.elem_b (name)) + { + String path = name + ".afm"; + path = search_path_.find (path); + if (path.empty_b ()) + return 0; + + *mlog << "[" << path; + Adobe_font_metric + * afm_p = new Adobe_font_metric (read_afm_file (path)); + *mlog << "]" << flush ; + + afm_p_dict_[name] = afm_p; + } + return afm_p_dict_[name]; +} + +Tex_font_metric * +All_font_metrics::find_tfm (String name) +{ + if (!tfm_p_dict_.elem_b (name)) + { + String path = name + ".tfm"; + path = search_path_.find (path); + if (path.empty_b ()) + return 0; + + *mlog << "[" << path; + Tex_font_metric * tfm_p = new Tex_font_metric; + tfm_p->read_file (path); + *mlog << "]" << flush ; + + tfm_p_dict_[name] = tfm_p; + } + return tfm_p_dict_[name]; +} + + +Font_metric * +All_font_metrics::find_font (String name) +{ + Font_metric * f= find_afm (name); + if (f) + return f; + + f = find_tfm (name); + if (f) + return f; + + f = find_tfm (default_font_sz_); + if (f) + return f; + String s = _f("Can't find default font `%s\', giving up.", default_font_sz_); + s += String ("\n") + _f ("search path = %s", search_path_.str ()); + error (s); +} diff --git a/lily/atom.cc b/lily/atom.cc index e237f75b70..0d71f4e240 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -64,6 +64,12 @@ Atom::extent () const return b; } +Interval +Atom::extent (Axis a) const +{ + return dim_[a] + off_[a]; +} + Atom::Atom () diff --git a/lily/bar-column-engraver.cc b/lily/bar-column-engraver.cc deleted file mode 100644 index d3c0a1af56..0000000000 --- a/lily/bar-column-engraver.cc +++ /dev/null @@ -1,106 +0,0 @@ -/* - bar-column-grav.cc -- implement Bar_column_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#include "bar-column-engraver.hh" -#include "bar-column.hh" -#include "request.hh" -#include "script.hh" -#include "bar.hh" -#include - -Bar_column_engraver::Bar_column_engraver() -{ - bar_l_ =0; - barcol_p_ =0; - break_priority_i_ = 0; -} - -void -Bar_column_engraver::do_creation_processing () -{ -} - - -void -Bar_column_engraver::do_process_requests () -{ - Scalar pri = get_property ("barColumnPriority", 0); - if (pri.length_i() && pri.isnum_b ()) - { - break_priority_i_ = int(pri); - } -} - -void -Bar_column_engraver::create_column () -{ - if (!barcol_p_) - { - barcol_p_ = new Bar_column; - barcol_p_->breakable_b_ =true; - barcol_p_->break_priority_i_ = break_priority_i_; - announce_element (Score_element_info (barcol_p_, 0)); - } -} - - -void -Bar_column_engraver::acknowledge_element (Score_element_info info) -{ - Item * it = dynamic_cast (info.elem_l_); - if (!it) - return; - Script *s = dynamic_cast (it); - Bar *b = dynamic_cast (it); - if (s - && it->breakable_b_ - && info.origin_grav_l_arr_.size() == 1 - && it->break_priority_i_ == break_priority_i_) - { - create_column (); - barcol_p_->add_script (s); - } - else if (info.origin_grav_l_arr_.size() == 1 - && it->break_priority_i_ == break_priority_i_ - && it->breakable_b_ - &&b) - - { - create_column (); - barcol_p_->set_bar (b); - } -} - - -void -Bar_column_engraver::process_acknowledged () -{ -} - - - -void -Bar_column_engraver::do_pre_move_processing() -{ - if (barcol_p_) - { - typeset_element (barcol_p_); - barcol_p_ =0; - } -} - -void -Bar_column_engraver::do_post_move_processing() -{ - script_l_arr_.clear(); - bar_l_ =0; -} - - -ADD_THIS_TRANSLATOR(Bar_column_engraver); diff --git a/lily/bar-column.cc b/lily/bar-column.cc deleted file mode 100644 index 625b2da895..0000000000 --- a/lily/bar-column.cc +++ /dev/null @@ -1,36 +0,0 @@ -/* - bar-column.cc -- implement Bar_column - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - -#include "bar.hh" -#include "bar-column.hh" - -Bar_column::Bar_column() -{ - bar_l_ =0; - breakable_b_ = true; -} - -void -Bar_column::set_bar (Bar*b) -{ - Script_column::add_support (b); - bar_l_ = b; -} - -void -Bar_column::do_substitute_dependency (Score_element*o,Score_element*n) -{ - Script_column::do_substitute_dependency (o,n); - if (o == bar_l_) - { - bar_l_ = dynamic_cast (n); - } -} - - - diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 59ab434cf6..57436ae70f 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -31,7 +31,6 @@ Bar_engraver::do_try_music (Music*r_l) return false; bar_req_l_ = b; - return true; } @@ -69,21 +68,7 @@ Bar_engraver::create_bar () void Bar_engraver::request_bar (String type_str) { -#if 0 // will dump core at announce_element (invalid daddy_grav_l_...) create_bar (); -#else - if (!bar_p_) - { - bar_p_ = new Bar; - bar_p_->break_priority_i_ = 0; - // urg: "" != empty... - String default_type = get_property ("defaultBarType", 0); - if (default_type.length_i ()) - { - bar_p_->type_str_ = default_type; - } - } -#endif if (((type_str == "|:") && (bar_p_->type_str_ == ":|")) || ((type_str == ":|") && (bar_p_->type_str_ == "|:"))) bar_p_->type_str_ = ":|:"; @@ -119,6 +104,11 @@ Bar_engraver::do_process_requests() create_bar (); bar_p_->type_str_ = bar_req_l_->type_str_; } + else if (!now_moment ()) + { + create_bar (); + bar_p_->type_str_ = ""; + } else { Scalar always = get_property ("barAlways", 0); diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 2d0412f427..7adc8dcdea 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -8,74 +8,33 @@ #include "bar-number-engraver.hh" -#include "script.hh" -#include "text-def.hh" -#include "paper-def.hh" -#include "command-request.hh" -#include "bar.hh" -#include "span-bar.hh" -#include "stem.hh" #include "time-description.hh" +#include "timing-engraver.hh" +#include "engraver-group.hh" +#include "g-text-item.hh" Bar_number_engraver::Bar_number_engraver() { - script_p_ =0; + axis_ = Y_AXIS; + type_ = "barNumber"; + visibility_lambda_ + = gh_eval_str ("(lambda (d) (if (= d 1) '(#f . #f) '(#t . #t)))"); } void -Bar_number_engraver::acknowledge_element (Score_element_info i) +Bar_number_engraver::do_process_requests () { - Bar *b =dynamic_cast (i.elem_l_); - if (script_p_ || !b) - return; + Translator *tr = daddy_grav_l ()->get_simple_translator ("Timing_engraver"); + Timing_translator *timer = dynamic_cast(tr); + Time_description *time = &timer->time_; - /* Only put numbers on bars that are at our own level (don't put - numbers over the staffs of a GrandStaff, only over the GrandStaff - itself */ - if (i.origin_grav_l_arr_.size() != 1) - return; - - Time_description const * time = get_staff_info().time_C_; - if (!time || time->cadenza_b_) - return; - - script_p_ = new Script; - Text_def *td_p = new Text_def; - td_p->text_str_ = to_str (time->bars_i_); - - td_p->align_dir_ = LEFT; - - script_p_->dir_ = UP; - script_p_->axis_ = Y_AXIS; - script_p_->specs_p_ = td_p->clone (); - script_p_->breakable_b_ = true; - - Scalar pri = get_property ("barNumberBreakPriority", 0); - if (pri.length_i () && pri.isnum_b ()) + if (!time->whole_in_measure_ && !time->cadenza_b_ && now_moment () > Moment (0)) { - script_p_->break_priority_i_ = int (pri); + create_items (0); + + text_p_->text_str_ = to_str (time->bars_i_); + text_p_->style_str_ = "roman"; } - else - script_p_->break_priority_i_ = b->break_priority_i_; - - Scalar padding = get_property ("barScriptPadding", 0); - if (padding.length_i() && padding.isnum_b ()) - { - script_p_->padding_f_ = Real(padding); - } - - announce_element (Score_element_info (script_p_,0)); } -void -Bar_number_engraver::do_pre_move_processing() -{ - if (script_p_) - { - typeset_element (script_p_); - script_p_ =0; - } -} - - ADD_THIS_TRANSLATOR(Bar_number_engraver); diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc new file mode 100644 index 0000000000..51cbfec3b9 --- /dev/null +++ b/lily/bar-script-engraver.cc @@ -0,0 +1,100 @@ +/* + bar-script-engraver.cc -- implement Bar_script_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1999 Han-Wen Nienhuys + + */ + +#include "bar-script-engraver.hh" +#include "bar.hh" +#include "g-staff-side.hh" +#include "g-text-item.hh" +#include "lily-guile.hh" + +Bar_script_engraver::Bar_script_engraver () +{ + axis_ = Y_AXIS; + staff_side_p_ = 0; + text_p_ =0; + visibility_lambda_ + = gh_eval_str ("(lambda (d) (if (= d -1) '(#t . #t) '(#f . #f)))"); +} + +void +Bar_script_engraver::acknowledge_element (Score_element_info i) +{ + Axis other_axis = Axis((axis_ + 1)%2); + + if (staff_side_p_ && !staff_side_p_->dim_cache_[other_axis].parent_l_) + { + Bar * bar_l = dynamic_cast (i.elem_l_); + if (!bar_l) + return; + + /* Only put numbers on bars that are at our own level (don't put + numbers over the staffs of a GrandStaff, only over the GrandStaff + itself */ + if (i.origin_grav_l_arr_.size () == 1) + { + staff_side_p_->dim_cache_[other_axis].parent_l_ = &bar_l->dim_cache_[other_axis]; + staff_side_p_->add_support (i.elem_l_); + } + } +} + +void +Bar_script_engraver::do_pre_move_processing () +{ + if (text_p_) + { + text_p_->breakable_b_ = true; // ugh + typeset_element (text_p_); + text_p_ =0; + } + + if (staff_side_p_) + { + staff_side_p_->breakable_b_ = true; // ugh + typeset_element (staff_side_p_); + staff_side_p_ = 0; + } +} + + +void +Bar_script_engraver::create_items (Request *rq) +{ + if (staff_side_p_ || text_p_) + return; + + staff_side_p_ = new G_staff_side_item; + staff_side_p_->axis_ = axis_; + + text_p_ = new G_text_item; + + Scalar prop = get_property (type_ + "Direction", 0); + if (prop.isnum_b ()) + { + staff_side_p_->dir_ = (Direction) (int) prop; + } + else + { + staff_side_p_->dir_ = UP; + } + + staff_side_p_->set_victim(text_p_); + + Scalar padding = get_property (type_ + "ScriptPadding", 0); + if (padding.length_i() && padding.isnum_b ()) + { + staff_side_p_->padding_f_ = Real(padding); + } + + staff_side_p_->visibility_lambda_ = visibility_lambda_; + text_p_->visibility_lambda_ = visibility_lambda_; + + announce_element (Score_element_info (text_p_, rq)); + announce_element (Score_element_info (staff_side_p_, rq)); +} diff --git a/lily/bar.cc b/lily/bar.cc index 58e4ab9ed6..824e2316a1 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -14,7 +14,6 @@ #include "debug.hh" - Bar::Bar () { breakable_b_ = true; @@ -33,9 +32,8 @@ Molecule* Bar::do_brew_molecule_p () const { Paper_def *p = paper (); - Atom s = lookup_l ()->bar (type_str_, p->get_var ("barsize")); + Molecule *output = new Molecule (lookup_l ()->bar (type_str_, p->get_var ("barsize"))); - Molecule*output = new Molecule (Atom (s)); return output; } diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index ebd09d3dff..ac7a02a26b 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -33,7 +33,7 @@ Beam_engraver::do_try_music (Music *m) if (d == STOP && !beam_p_) { - m->warning ("No Beam to end"); + m->warning (_ ("No Beam to end")); return false; } reqs_drul_[d ] = c; @@ -49,7 +49,7 @@ Beam_engraver::do_process_requests () if (reqs_drul_[STOP]) { if (!beam_p_) - reqs_drul_[STOP]->warning (_("No beam to stop")); + reqs_drul_[STOP]->warning (_("No beam to end")); finished_beam_p_ = beam_p_; finished_grouping_p_ = grouping_p_; @@ -61,7 +61,7 @@ Beam_engraver::do_process_requests () { if (beam_p_) { - reqs_drul_[START]->warning ("Already have a Beam"); + reqs_drul_[START]->warning (_ ("Already have a Beam")); return; } @@ -126,7 +126,7 @@ Beam_engraver::do_removal_processing () typeset_beam (); if (beam_p_) { - warning ("Unfinished beam"); + warning (_ ("Unfinished beam")); finished_beam_p_ = beam_p_; finished_grouping_p_ = grouping_p_; typeset_beam (); @@ -146,9 +146,9 @@ Beam_engraver::acknowledge_element (Score_element_info info) Rhythmic_req *rhythmic_req = dynamic_cast (info.req_l_); if (!rhythmic_req) { - String s=_("Stem must have Rhythmic structure."); + String s = _ ("Stem must have Rhythmic structure."); if (info.req_l_) - info.req_l_->warning(s); + info.req_l_->warning (s); else ::warning (s); @@ -159,7 +159,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) if (rhythmic_req->duration_.durlog_i_<= 2) { rhythmic_req->warning (_ ("stem doesn't fit in beam")); - reqs_drul_[LEFT]->warning (_("beam was started here")); + reqs_drul_[LEFT]->warning (_ ("beam was started here")); return; } @@ -170,7 +170,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) if (!grouping_p_->child_fit_b (start)) { - String s (_("please fix me") + ": " + String s (_ ("please fix me") + ": " + _f ("stem at %s doesn't fit in beam", now_moment ().str ())); if (info.req_l_) diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 79190f393b..df90680dc4 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -8,7 +8,6 @@ #include "chord-name-engraver.hh" #include "musical-request.hh" -#include "text-item.hh" #include "paper-def.hh" #include "lookup.hh" #include "paper-def.hh" @@ -40,11 +39,72 @@ Chord_name_engraver::do_try_music (Music* m) return false; } -/* - UGH. + /* + find tonic: after longest line of triads + */ +int +Chord_name_engraver::find_tonic_i () const +{ + int tonic_i = 0; + int longest_i = 0; + for (int i = 0; i < pitch_arr_.size (); i++) + for (int j = 0; j < pitch_arr_.size (); j++) + { + int gap = pitch_arr_[(i + j + 1) % pitch_arr_.size ()].notename_i_ + - pitch_arr_[(i + j) % pitch_arr_.size ()].notename_i_; + while (gap < 0) + gap += 7; + gap %= 7; + if (gap != 2) + { + if (j > longest_i) + { + longest_i = j; + tonic_i = i; + } + break; + } + } + + int biggest_i = 0; + if (!longest_i) + for (int i = 0; i < pitch_arr_.size (); i++) + { + int gap = pitch_arr_[i].notename_i_ + - pitch_arr_[(i - 1 + pitch_arr_.size ()) + % pitch_arr_.size ()].notename_i_; + while (gap < 0) + gap += 7; + gap %= 7; + if (gap > biggest_i) + { + biggest_i = gap; + tonic_i = i; + } + } + return tonic_i; +} + +Array +Chord_name_engraver::rebuild_pitch_arr (int tonic_i) const +{ + Musical_pitch last (0, 0, -5); + Array pitches; + for (int i = 0; i < pitch_arr_.size (); i++) + { + Musical_pitch p = pitch_arr_[(tonic_i + i) % pitch_arr_.size ()]; + if (p < last) + { + p.octave_i_ = last.octave_i_; + if (p < last) + p.octave_i_++; + } + pitches.push (p); + last = p; + } + return pitches; +} - Split this routine into neat packets - */ void Chord_name_engraver::do_process_requests () { @@ -65,74 +125,44 @@ Chord_name_engraver::do_process_requests () */ - - /* - find tonic: after longest line of triads - */ - int tonic_i = 0; + Musical_pitch inversion = pitch_arr_[0]; Scalar chord_inversions = get_property ("chordInversion", 0); if (chord_inversions.to_bool ()) { - int longest_i = 0; - for (int i = 0; i < pitch_arr_.size (); i++) - for (int j = 0; j < pitch_arr_.size (); j++) - { - int gap = pitch_arr_[(i + j + 1) % pitch_arr_.size ()].notename_i_ - - pitch_arr_[(i + j) % pitch_arr_.size ()].notename_i_; - while (gap < 0) - gap += 7; - gap %= 7; - if (gap != 2) - { - if (j > longest_i) - { - longest_i = j; - tonic_i = i; - } - break; - } - } - - int biggest_i = 0; - if (!longest_i) - for (int i = 0; i < pitch_arr_.size (); i++) - { - int gap = pitch_arr_[i].notename_i_ - - pitch_arr_[(i - 1 + pitch_arr_.size ()) - % pitch_arr_.size ()].notename_i_; - while (gap < 0) - gap += 7; - gap %= 7; - if (gap > biggest_i) - { - biggest_i = gap; - tonic_i = i; - } - } + tonic_i = find_tonic_i (); + if (tonic_i) + pitch_arr_ = rebuild_pitch_arr (tonic_i); } + - Musical_pitch inversion = pitch_arr_[0]; - if (tonic_i) + G_text_item* item_p = new G_text_item; + + item_p->text_str_ = banter_str (pitch_arr_, tonic_i, inversion); + + Scalar style = get_property ("textstyle", 0); + if (style.length_i ()) + item_p->style_str_ = style; + + text_p_arr_.push (item_p); + announce_element (Score_element_info (item_p, 0)); +} + +void +Chord_name_engraver::do_pre_move_processing () +{ + for (int i=0; i < text_p_arr_.size (); i++) { - Musical_pitch last (0, 0, -5); - Array pitches; - for (int i = 0; i < pitch_arr_.size (); i++) - { - Musical_pitch p = pitch_arr_[(tonic_i + i) % pitch_arr_.size ()]; - if (p < last) - { - p.octave_i_ = last.octave_i_; - if (p < last) - p.octave_i_++; - } - pitches.push (p); - last = p; - } - pitch_arr_ = pitches; + typeset_element (text_p_arr_[i]); } + text_p_arr_.clear (); + pitch_arr_.clear (); +} - Musical_pitch tonic = pitch_arr_[0]; +String +Chord_name_engraver::banter_str (Array pitch_arr, int tonic_i, Musical_pitch inversion) const +{ + Musical_pitch tonic = pitch_arr[0]; Array scale; scale.push (Musical_pitch (0)); // c @@ -155,16 +185,25 @@ Chord_name_engraver::do_process_requests () + acc[tonic.accidental_i_ + 2]; String add_str; + String sub_str; String sep_str; - for (int i=1; i < pitch_arr_.size (); i++) + int last_trap = 1; + for (int i=1; i < pitch_arr.size (); i++) { - Musical_pitch p = pitch_arr_[i]; - int trap = p.notename_i_ - tonic.notename_i_ + Musical_pitch p = pitch_arr[i]; + int trap = p.notename_i_ - tonic.notename_i_ + (p.octave_i_ - tonic.octave_i_) * 7 + 1; + while (trap - last_trap > 2) + { + last_trap += 2; + sub_str += sep_str + "no" + to_str (last_trap); + sep_str = "/"; + } + last_trap = trap; int accidental = p.accidental_i_ - scale[(trap - 1) % 7].accidental_i_; if ((trap == 3) && (accidental == -1)) tonic_str += "m"; // hmm - else if (accidental || (!(trap % 2) || ((i + 1 == pitch_arr_.size ()) && (trap > 5)))) + else if (accidental || (!(trap % 2) || ((i + 1 == pitch_arr.size ()) && (trap > 5)))) { add_str += sep_str; if ((trap == 7) && (accidental == 1)) @@ -187,27 +226,7 @@ Chord_name_engraver::do_process_requests () + acc[tonic.accidental_i_ + 2]; } - - G_text_item* item_p = new G_text_item; - - item_p->text_str_ = tonic_str + "$^{" + add_str + "}$" + inversion_str; - Scalar style = get_property ("textstyle", 0); - if (style.length_i ()) - item_p->style_str_ = style; - - text_p_arr_.push (item_p); - announce_element (Score_element_info (item_p, 0)); + String str = tonic_str + "$^{" + add_str + sub_str + "}$" + inversion_str; + return str; } - -void -Chord_name_engraver::do_pre_move_processing () -{ - for (int i=0; i < text_p_arr_.size (); i++) - { - typeset_element (text_p_arr_[i]); - } - text_p_arr_.clear (); - pitch_arr_.clear (); -} - diff --git a/lily/clef-item.cc b/lily/clef-item.cc index e65cd80676..a41cb38f27 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -13,11 +13,14 @@ #include "paper-def.hh" #include "lookup.hh" #include "clef-engraver.hh" -#include "text-item.hh" +#include "g-text-item.hh" +#include "p-score.hh" void Clef_item::do_pre_processing() { + dim_cache_[Y_AXIS].translate (paper()->internote_f () * y_position_i_); + bool b= (break_status_dir() != RIGHT); change_b_ = b; @@ -39,13 +42,30 @@ Clef_item::Clef_item() octave_dir_ = CENTER; symbol_ = "treble"; y_position_i_ = -2; - - // Ugh: This should be const, I guess. - octave_marker_td_p_.set_p (new Text_def());// UGH! - octave_marker_td_p_->text_str_ = "8"; - octave_marker_td_p_->style_str_ = "italic"; } +void +Clef_item::do_add_processing () +{ + if (!break_status_dir_ // broken stuff takes care of their own texts + && octave_dir_) + { + G_text_item *g = new G_text_item; + pscore_l_->typeset_element (g); + + g->text_str_ = "8"; + g->style_str_ = "italic"; + g->dim_cache_[Y_AXIS].parent_l_ = &dim_cache_[Y_AXIS]; + g->dim_cache_[X_AXIS].parent_l_ = &dim_cache_[X_AXIS]; + add_dependency (g); // just to be sure. + + Real r = do_height ()[octave_dir_] + g->extent (Y_AXIS)[-octave_dir_]; + g->dim_cache_[Y_AXIS].set_offset (r); + } + +} + + @@ -55,26 +75,12 @@ Clef_item::do_brew_molecule_p() const String t = symbol_; if (change_b_) t += "_change"; + // Atom s = lookup_l ()-> text ("roman", to_str (break_status_dir ())); + Atom s = lookup_l ()->clef (t); Molecule*output = new Molecule (Atom (s)); - output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS); - if (octave_dir_) { - Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(), - CENTER)); - Real offset = output->extent()[Y_AXIS][octave_dir_] - - octave_marker.extent()[Y_AXIS][- octave_dir_]; - if (octave_dir_ == DOWN) - offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ; - octave_marker.translate_axis (offset, Y_AXIS); - output->add_molecule (octave_marker); - } return output; } - -#include "pointer.tcc" -template class P; // ugh - - diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index dd36db400b..2a28d15410 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -9,7 +9,6 @@ #include "crescendo.hh" #include "dynamic-engraver.hh" #include "musical-request.hh" -#include "text-item.hh" #include "lookup.hh" #include "paper-def.hh" #include "score-column.hh" @@ -96,7 +95,7 @@ Dynamic_engraver::do_process_requests() String loud = absd->loudness_str (); text_p_ = new G_text_item; - text_p_->text_str_ = paper ()->lookup_l (0)->dynamic (loud).str_; + text_p_->text_str_ = "dyn" + loud; // ugh Scalar prop = get_property ("dynamicStyle", 0); text_p_->style_str_ = prop.length_i () ? prop : "dynamic"; diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index 2ca52271e6..7c727b128c 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -14,7 +14,6 @@ #include "p-col.hh" #include "paper-def.hh" #include "extender-spanner.hh" -#include "text-item.hh" #include "text-def.hh" Extender_spanner::Extender_spanner () @@ -92,9 +91,8 @@ Extender_spanner::do_post_processing () Direction d = LEFT; do { - Item* t = item_l_drul_[d] ? item_l_drul_[d] : item_l_drul_[(Direction)-d]; - - dy_f_drul_[d] += t->extent (Y_AXIS).length () / 2; + Item* t = item_l_drul_[d] + ? item_l_drul_[d] : item_l_drul_[(Direction)-d]; if (d == LEFT) dx_f_drul_[d] += t->extent (X_AXIS).length (); else diff --git a/lily/g-staff-side.cc b/lily/g-staff-side.cc index 3988f0b9e9..72f952d89f 100644 --- a/lily/g-staff-side.cc +++ b/lily/g-staff-side.cc @@ -9,11 +9,23 @@ #include "g-staff-side.hh" +G_staff_side_item::G_staff_side_item () +{ + dir_ = CENTER; + to_position_l_ = 0; + transparent_b_ = true; + padding_f_ = 0; +} + + void G_staff_side_item::do_pre_processing () { if (!dir_) set_default_direction (); + + if (axis_ == X_AXIS) + position_self (); } void @@ -22,13 +34,6 @@ G_staff_side_item::set_default_direction () dir_ = DOWN; } -G_staff_side_item::G_staff_side_item () -{ - dir_ = CENTER; - to_position_l_ = 0; - transparent_b_ = true; - padding_f_ = 0; -} void G_staff_side_item::set_victim (Score_element *e) @@ -55,26 +60,33 @@ G_staff_side_item::do_substitute_dependency (Score_element*o, Score_element*n) support_l_arr_.unordered_substitute (o,n); } - void -G_staff_side_item::do_post_processing () +G_staff_side_item::position_self () { if (!support_l_arr_.size ()) return ; Dimension_cache *common = common_group (typecast_array (support_l_arr_, (Graphical_element*)0), - Y_AXIS); + axis_); Interval dim; for (int i=0; i < support_l_arr_.size (); i++) { Score_element * e = support_l_arr_ [i]; - Real coord = e->relative_coordinate (common, Y_AXIS); - dim.unite (coord + e->extent (Y_AXIS)); + Real coord = e->relative_coordinate (common, axis_); + dim.unite (coord + e->extent (axis_)); } - Interval sym_dim = to_position_l_->extent (Y_AXIS); - Real off = dim_cache_[Y_AXIS].relative_coordinate (common) - padding_f_ * dir_; + Interval sym_dim = to_position_l_->extent (axis_); + Real off = dim_cache_[axis_].relative_coordinate (common) - padding_f_ * dir_; - dim_cache_[Y_AXIS].set_offset (dim[dir_] - sym_dim[-dir_] - off); + dim_cache_[axis_].set_offset (dim[dir_] - sym_dim[-dir_] - off); } + +void +G_staff_side_item::do_post_processing () +{ + if (axis_ == Y_AXIS) + position_self (); +} + diff --git a/lily/heads-engraver.cc b/lily/heads-engraver.cc index 4e894ba438..c2d52cf139 100644 --- a/lily/heads-engraver.cc +++ b/lily/heads-engraver.cc @@ -49,9 +49,6 @@ Note_heads_engraver::do_process_requests() note_p->steps_i_ = note_req_l->pitch_.steps (); // note_p->position_i_ = note_req_l->pitch_.steps (); - String noteheadstyle = get_property ("noteheadStyle", 0); - if (noteheadstyle.length_i ()) - note_p->note_head_type_str_ = noteheadstyle; Score_element_info itinf (note_p,note_req_l); announce_element (itinf); diff --git a/lily/identifier.cc b/lily/identifier.cc index b9e422a366..7fd434274c 100644 --- a/lily/identifier.cc +++ b/lily/identifier.cc @@ -13,7 +13,6 @@ #include "identifier.hh" #include "my-lily-lexer.hh" #include "debug.hh" -#include "symtable.hh" #include "script-def.hh" #include "request.hh" #include "translator.hh" @@ -85,7 +84,6 @@ Class ## _identifier::do_print () const { \ DEFAULT_PRINT(General_script_def); DEFAULT_PRINT(Translator); -DEFAULT_PRINT(Symtables); DEFAULT_PRINT(Music); DEFAULT_PRINT(Request); DEFAULT_PRINT(Score); @@ -103,7 +101,6 @@ Class ## _identifier::do_str () const { \ DUMMY_STR(Notename_table); DUMMY_STR(General_script_def); DUMMY_STR(Translator); -DUMMY_STR(Symtables); DUMMY_STR(Music); DUMMY_STR(Request); DUMMY_STR(Score); @@ -175,7 +172,6 @@ IMPLEMENT_ID_CLASS(int); IMPLEMENT_ID_CLASS(Real); IMPLEMENT_ID_CLASS(String); IMPLEMENT_ID_CLASS(General_script_def); -IMPLEMENT_ID_CLASS(Symtables); IMPLEMENT_ID_CLASS(Music); IMPLEMENT_ID_CLASS(Score); IMPLEMENT_ID_CLASS(Request); @@ -191,7 +187,6 @@ DEFAULT_ACCESSOR(Duration); DEFAULT_ACCESSOR(int); DEFAULT_ACCESSOR(Real); DEFAULT_ACCESSOR(String); -DEFAULT_ACCESSOR(Symtables); DEFAULT_ACCESSOR(Score); DEFAULT_ACCESSOR(Midi_def); DEFAULT_ACCESSOR(Paper_def); diff --git a/lily/include/afm.hh b/lily/include/afm.hh index 3be52df478..fea4592ad5 100644 --- a/lily/include/afm.hh +++ b/lily/include/afm.hh @@ -14,8 +14,9 @@ #include "box.hh" #include "array.hh" #include "dictionary.hh" +#include "font-metric.hh" -struct Adobe_font_char_metric { +struct Adobe_font_char_metric : Character_metric { int C_; Real WX_; String N_; @@ -27,9 +28,11 @@ struct Adobe_font_char_metric { String str () const; Adobe_font_char_metric (); + + Box dimensions () const; }; -struct Adobe_font_metric { +struct Adobe_font_metric : Font_metric { String FontName_; String FullName_; String FamilyName_; @@ -46,11 +49,14 @@ struct Adobe_font_metric { Array ascii_to_metric_idx_; Dictionary name_to_metric_dict_; - Adobe_font_char_metric find_char (String name, bool warn=true) const; - Adobe_font_char_metric find_ascii (int ascii) const; + Adobe_font_char_metric const &find_char (String name, bool warn=true) const; + Adobe_font_char_metric const &find_ascii (int ascii,bool warn) const; String str () const; Adobe_font_metric (); void read_char_metrics (Data_file &input); + + + Character_metric *get_char (int, bool) const; }; Adobe_font_metric read_afm_file (String fn); diff --git a/lily/include/all-fonts.hh b/lily/include/all-fonts.hh index da9f91e48c..f9203954bb 100644 --- a/lily/include/all-fonts.hh +++ b/lily/include/all-fonts.hh @@ -13,6 +13,7 @@ #include "dictionary.hh" #include "file-path.hh" #include "lily-proto.hh" +#include "font-metric.hh" /** Interface to all .afm files living in the filesystem. @@ -20,10 +21,13 @@ class All_font_metrics { Dictionary afm_p_dict_; + Dictionary tfm_p_dict_; File_path search_path_; public: - Adobe_font_metric *find_font (String name); + Adobe_font_metric *find_afm (String name); + Tex_font_metric *find_tfm (String); + Font_metric *find_font (String name); All_font_metrics (String search_path); }; diff --git a/lily/include/atom.hh b/lily/include/atom.hh index 1fd7ef262c..22c5d15a0c 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -36,6 +36,7 @@ public: void translate_axis (Real r,Axis a); /// how big is #this#? Box extent() const; + Interval extent (Axis)const; void print() const; bool check_infinity_b () const; bool empty() const; diff --git a/lily/include/bar-column-engraver.hh b/lily/include/bar-column-engraver.hh deleted file mode 100644 index 2cb233b295..0000000000 --- a/lily/include/bar-column-engraver.hh +++ /dev/null @@ -1,37 +0,0 @@ -/* - bar-column-engraver.hh -- declare Bar_column_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef BAR_COLUMN_GRAV_HH -#define BAR_COLUMN_GRAV_HH - -#include "engraver.hh" -#include "parray.hh" - -/// couple bars and appropriate scripts -class Bar_column_engraver :public Engraver { - Bar_column *barcol_p_; - Link_array