From: Han-Wen Nienhuys Date: Thu, 1 Oct 1998 18:42:02 +0000 (+0200) Subject: patch::: 1.0.12.hwn1 X-Git-Tag: release/1.0.13~3 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=106e5978fe2fa568bbc6649bc8fcf1134307373a;p=lilypond.git patch::: 1.0.12.hwn1 pl 12.hwn1 - \remove "Engraver_type"; - \output "bla" -> output = "bla" (mudela 0.1.6) - \property defaultclef -> \property defaultClef - naming of access_{Engraver,Performer,Translator_group} () - changed syntax for \translator in \paper{} (mudela 0.1.6) - declared contexts: StaffContext = \translator { .. } \translator { \StaffContext } - elt_b -> elem_b - bf: add Separating_line_group_engraver to RhythmicStaff. pl 12.am1 - large doc patch, ChoireStaff -> ChoirStaff ******* pl 12 --- diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo index 40e025e911..ea02839fdd 100644 --- a/Documentation/tex/refman.yo +++ b/Documentation/tex/refman.yo @@ -3,6 +3,10 @@ COMMENT(-*-text-*-) redef(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\ whenhtml(sc(ARG1))) + +redef(mycode)(1)(tt(ARG1)) + + COMMENT( This document contains Mudela fragments. You need at least Yodl-1.30.18 to convert this to tex or html. @@ -20,15 +24,14 @@ latexlayoutcmds( \setlength{\textwidth}{5.875in} \setlength{\oddsidemargin}{0.25in} \setlength{\evensidemargin}{0.25in} -\usepackage[T1]{fontenc} \input mudela-book ) -whenlatex(notableofcontents()) +COMMENT(whenlatex(notableofcontents())) whentexinfo(notableofcontents()) -article(Mudela, reference manual) - (Han-Wen Nienhuys and Jan Nieuwenhuizen) +article(Mudela Reference Manual) + (Andrew Moriano, Han-Wen Nienhuys and Jan Nieuwenhuizen) (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop()) COMMENT( @@ -57,8 +60,9 @@ 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. - +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 @@ -77,105 +81,164 @@ 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. -The below is included for explanatory purposes only (i.e., for a -complete and up-to-date definition, see file(lily/parser.yy) and -file(lily/lexer.ll)). - -As a related note, you should take a look at the examples and the init -files, as this document does not cover every aspect of Mudela yet, and -may be out of date.footnote(Ok, I am being pessimistic here. This -just is a disclaimer. Docs usually are written after the program -itself.) This document intends to give an idea of how it works. It is -not a guide on how to use it. - sect(Running LilyPond) -When invoked with a filename that has no extension, LilyPond will add -a file(.ly) extension. When invoked with a filename ending in -file(.fly), LilyPond processes the file as a music fragment using -file(init.fly). When file(foo.fly) is read, LilyPond does something -like this: -\verb(\score { +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 "foo.fly" + \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. sect(Syntax) -A Mudela files consists of statements, generally -separated by spaces, tabs or newlines. 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 data types. Four types of simple constants -are supported: integers, reals, strings, and notes. An integer is a -sequence of digits such as code(12). A real is fromed from an -optional minus sign and a sequence of digits followed by a decimal -point and an optional exponent such as code(-1.2e3). A string is -started and ended with the code(") character. To include a code(") -character in a string, you must 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. A -note consists of a note name followed by an optional duration. See -section ref(notedesc) for details on this type. A 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. +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). -The simplest musiclist is a single note. More complicated music lists -are formed by surrounding a list of musiclists 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. - A statement in Mudela has one of three forms: verb(\keyword argument \keyword argument1 argument2 ... ; string=value) - -To assign an identifier you use: -verb(string = ...) -To use an identifier, you must preceed it with a backslash: code(\). -verb(oboe = \notes { ... } -\score{ \notes { \oboe }}) -The left-hand part of the assignment is really a string, so -verb("Foo bar 4 2 " = \notes { ... }) -is also a valid assignment (but you would have trouble referencing it) -If you reuse identifiers, then the previous contents will be thrown -away after the right hand is evaluated, e.g. -verb(bla = \notes { \bla }) -is legal. - -COMMENT(It's not clear to me what things are allowed on the RHS of -an identifier assignment.) - -The following words are keywords. You can define an identifer whose -name is a keyword, but you will not be able to reference it. - -verb(absdynamic font mm pt time -accepts grouping musicalpitch relative translator -bar header notenames score transpose -cadenza in notes script type -clear include octave shape version -clef key output skip -cm keysignature paper spandynamic -consists lyric partial symboltables -contains mark penalty table -duration midi property tempo ) - -COMMENT( I don't know the proper way to make this kind of table in -yodl. ) +) + +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 header musicalpitch score transpose +accepts in notenames script type +bar include notes shape version +cadenza key output skip +clef keysignature paper spandynamic +cm lyric partial symboltables +consists maininput penalty table +duration mark property tempo +font midi pt time +grouping mm relative translator) + +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. + +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(:)), 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. + + COMMENT( subsect(Hierarchical structures) @@ -200,13 +263,14 @@ Mudela becoming tedious ) - -sect(Modes) +subsect(Modes) +label(modes) To simplify different aspects of music definition (entering the notes -and manipulating them) Mudela has a number of different input "modes". +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 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 @@ -228,24 +292,31 @@ treated as a string. If you mistype a notename, the parser will most likely complain that you should be in code(\lyric) mode to do lyrics. dit(Lyric mode) Lyrics mode is introduced by the keyword - code(\lyric). Because of the various control characters that can - appear in lyrics, e.g., foreign language accents, the inputting a - string containing these has been made very easy. Every sequence of -non-digit and non-white characters starting with an alphabetic -character or the code(_) is considered a word. When code("word") is -encountered it is treated as a lyric (without the quotes). Likewise, -when code(word) is encountered, it is treated as a lyric. The code(_) -character is converted to a space; it provides a mechanism for -creating words that contain spaces. +code(\lyric). 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 -1THtrhortho % not 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: 4 spaces +_ _ _ _ % 4 words, each one a space )) -COMMENT(Well, " seems to present some problems. Also `` seems to be -problematic. So the above statement isn't quite right. Unless these -characters are considered to be "white") COMMENT( These modes are of a lexical nature. Normal and Note mode largely @@ -269,16 +340,14 @@ 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). A flat is formed by adding code(es). -Double sharps and double flats are obtained by adding code(isis) or -code(eses). +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)footnote(These -are Dutch, English, German, Italian and Swedish. -Simply include the language specific init file file(language.ly).). -Rests are specified with the note name code(r). There is also a note -name code(s) which produces a nonprinting note of the specified -duration. +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 @@ -310,7 +379,7 @@ 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(!)' +using the optional exclamation mark `code(!)' on a pitch. mudela(fragment,verbatim,center)( cis' d' e' cis' c'! d' e' c' @@ -337,11 +406,22 @@ 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 it does not change the symbol that is -printed. +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: @@ -350,7 +430,7 @@ c'\breve gis'\longa ) -subsect(Beams and Tuplets) +subsect(Note Spanners: Beams, Tuplets, Slurs and Ties) A beam is specified by surrounding the beamed notes with brackets code([) and code(]). @@ -380,50 +460,41 @@ mudela(fragment,verbatim,center)( [/3 b'8 b' b' ]/1 \[/3 a'4 a'8\]/1 ) -COMMENT(The rest of this section needs to be rewritten. I don't -understand what's going on at all here. The meaning of the lone ] is -unclear. And the : syntax is also unclear. --Adrian) +COMMENT(This next bit needs to be fixed...or the language needs to be +fixed.) Here is a combination mudela(fragment,verbatim,center)( [/3 a'8 a'16 a'] a'8 \] ) -Abbreviations -mudela(fragment,verbatim,center)( -c'1:16 [:16 e'1 g'] -) - -mudela(fragment,verbatim,center)( -c'4:32 [:16 c'8 d'8] -) - - - -subsect(Slurs and Ties) - -A tie connects two adjacent note heads - +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)( -e' ~ e' +f'()g'()a' [a'8 b']( a'4 g' )f' ) -Whereas a slur rather connects `chords', -and tries to avoid crossing stems +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. For ties +between chords, the input convention is somewhat peculiar. You cannot +write code(~), but rather must put the tilde after +a note within the first chord. mudela(fragment,verbatim,center)( -e'( )e' +e' ~ e' ) -And of course, such a (legato) slur can span several notes -mudela(fragment,verbatim,center)( -c'( d' e' )f' -) subsect(Note Ornaments) A variety of symbols can appear above and below notes to indicate -different characteristics of the performance. These symbols can be +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. @@ -454,48 +525,163 @@ mudela()( } ) +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 + \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 c''4-^_"c-\\^{ }" s4 } - \paper { linewidth = 12.\cm; }}) + \paper { linewidth = 12.\cm; }}) -Dynamic marks are specified by using an identifier after -a note without a dash: code(c4 \ff). 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). +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). +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. +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?) +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. +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(\lyric). -Two syllables or words that compose a single -duration entry are bound together using an underscore: -code(He_could4 not4). Here is a full example: -mudela(verbatim)(\score{ +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 \lyric { @@ -508,9 +694,11 @@ COMMENT( URG Fr\`e-4 re Ja- que Fr\`e- re Ja- que +Why does this warrant an URG? ) +COMMENT( sect(Chords and Voices) @@ -536,13 +724,15 @@ mudela(fragment,verbatim)( > ) +) 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 in series using braces the duration is the sum of the -durations of the elements. When music is stacked using angle +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. @@ -568,7 +758,7 @@ 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) @@ -633,27 +823,31 @@ verb( { c } % 4 increasing chords ) - +) sect(Keywords) -Keywords sometimes appear alone, but usually they require arguments. -A keyword may have a single argument, or a sequence of arguments separated -by spaces and terminated by a semicolon: -`code(\keyword argument argument ... ;)' +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 command for +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 command can appear only within a -code(\translator) block. It specifies what contexts are allowed +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(\bar) var(bartype)code(;)) Prints a special bar symbol, or at measure boundaries, replaces the regular bar symbol with a special @@ -666,23 +860,20 @@ 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 +dit(mycode(\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(\clear)) Allowed only within code(\notename). Clears all the -previously defined note names. - 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()( +mudela(center)( \score{ - \notes{ + \notes{ \cadenza 1; %\property Voice.textstyle = typewriter \clef subbass; c'4-"\kern-10mm subbass" \clef bass; c'4^"\kern -8mm bass" @@ -690,55 +881,17 @@ mudela()( \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; -Staff = \translator { - \type "Line_group_engraver_group"; - - defaultclef = violin; - -% \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; - } - -} - + \paper{ linewidth= 4.5 \in } } ) -mudela()( +mudela(center)( \score{ - \notes{\clef alto; c'4_"\kern -10mm alto" + \notes{\cadenza 1; \clef alto; c'4_"\kern -10mm alto" \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; -Staff = \translator { - \type "Line_group_engraver_group"; - - defaultclef = violin; - -% \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; - } -} + \paper{ linewidth= 4.5 \in } } ) The treble clef can also be obtained using the names code(G) or @@ -746,12 +899,9 @@ 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 command can appear only within a +dit(code(\consists) var(string)code(;)) This keyword can appear only within a code(\translator) block. It specifies that an engraver named -var(string) should be added to the translator. - -dit(code(\contains)) Produces a parse error. (There is no rule in the -grammar that refers to this token.) +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 @@ -759,7 +909,7 @@ duration. The parameter var(length) is the negative logarithm (base note, etc. The number of dots after the note is given by var(dotcount). -dit(code(\font) var(string)) Internal command. Used within +dit(code(\font) var(string)) Internal keyword. Used within code(\symboltables) to specify the font. dit(code(\grouping) var(durationseq); ) Sets the metric structure of @@ -768,14 +918,20 @@ 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. Some possible key values +are: title, opus, description, composer, enteredby, and copyright. + 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. -dit(code(\lyric) var(lyriclist)) Parse var(lyriclist) in lyrics mode. - dit(code(\key) var(pitch)) Change key signature to that of var(pitch)-major. @@ -783,8 +939,21 @@ dit(code(\keysignature) var(pitchseq);) 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(\lyric) 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) or code(\mark) var(string)) Allowed in -music only. What does this do? +music only. Prints a mark over or under (?) the staff. You must add +code(Mark_engraver) to the Score context and it only seems to work if the +mark appears at the beginning of a line. + +dit(code(\midi) var(statementlist)) Appears in a score block to +indicate that musical output should be produced. 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, @@ -793,47 +962,30 @@ 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(\notes) var(music)) Enter note mode and process the -specified music. - -dit(code(\time) var(numerator)code(/)var(denominator)) Change the time -signature. The default time signature is 4/4. - -dit(code(\midi) var(statementlist)) Appears in a score block to -indicate that musical output should be produced. See code(\tempo). - -dit(code(\mm)) Specify a dimension in millimeters. - -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. Some possible key values -are: title, opus, description, composer, enteredby, and copyright. - dit(code(\notenames) var(assignmentlist)) Define new note names. The argument is a list of definitions of the form var(name) = var(pitch), where var(pitch) is specified with the -code(\musicalpitch) command. Another possibility is code(\clear) -which can appear instead of an assignment. +code(\musicalpitch) keyword. -dit(code(\octave)) Generate a parse error. Never referred to in the -grammar. +dit(code(\notes) var(music)) Enter note mode and process the +specified music. -dit(code(\output) var(string)code(;)) Allowed only in +dit(code(\)code(output) var(string)code(;)) Allowed only in code(\paper) block. The parameter var(string) specifies an alternate name for the TeX() output. A file(.tex) extension will be added to var(string) to produce the output file name. -dit(code(\partial) var(duration)) Specify that the first measure of -the music lasts only for the specified duration. - dit(code(\paper) var(statmentlist)) Appears in a score block to indicate that the music should be printed. +The var(statmentlist) contains statements that change features of the +output. See Section ref(paper). -dit(code(\penalty) code(=) var(int)) Allowed only in musiclists. -Discourages line breaks. +dit(code(\partial) var(duration)) Specify that the first measure of +the music lasts only for the specified duration. + +dit(code(\penalty) code(=) var(int)) 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 @@ -843,28 +995,19 @@ 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 note is chosen so that the -note is closest to the preceeding note. +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 pitches in the next -chord. - -Because transposing changes both note names and octaves relativizing -transposed music doesn't make any sense. If you want to transpose -relative music, do code(\transpose var(pitch) \relative var(pitch) -var(music)), i.e., first enter the music in relative mode, and then -transpose it by prepending the code(\transpose) keyword. -code(\relative var(pitch) \transpose var(pitch)) has no effect. +first note of a chord is used as the base for the first pitches in the next +chord. See Section ref(relative). -For the same reason the first code(\relative) in code(\relative -var(pitch1) \relative var(pitch2) var(music)) has no effect. - - -dit(code(\score) var(statementlist)) Define music. +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 command is +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 @@ -896,54 +1039,63 @@ 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 -command for crescendo and decrescendo symbols. The first parameter +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 command. Used to create symbol +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 command. Used within code(\symboltables) -to specify the tables. See initialization files. +dit(code(\table)) Internal keyword. Used within code(\symboltables) +to specify the tables. See initialization files. dit(code(\tempo) var(duration) = var(perminute)) Used within code(\midi) to specify the tempo. For example, `code(\midi { \tempo 4 = 76})' requests output with 76 quarter notes per minute. + +dit(code(\time) var(numerator)code(/)var(denominator)) Change the time +signature. The default time signature is 4/4. + + 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. The second variant appears in a -musiclist. It specifies that the current the contexts +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(\type) var(contexttype) [code(=) var(contextname)] -var(musiclist) or code(\type) var(translatortype)code(;)) The first -variant is used only within musiclists to -create a instance of a context. The new context -can optionally be given a name. The second variant appears within a -code(\translator) block and specifies the type of translator being -created. - dit(code(\transpose) var(pitch) var(music)) Transposes the specified -music. Middle C is tranposed to var(pitch). +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) @@ -951,47 +1103,48 @@ 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(musiclist)'. The following context types are +var(contextname)] var(music)'. The following context types are allowed. description( -dit(code(Lyrics)) Typesets lyrics. +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) or code(Lyrics) contexts. + 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) or code(Lyrics) contexts. +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), code(RhythmicStaff) or code(Lyrics) contexts. +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) or code(Lyrics) contexts. +It can contain code(Staff), code(RhythmicStaff), code(GrandStaff) or code(Lyrics) contexts. -dit(code(ChoireStaff)) Identical to code(StaffGroup) except that the +dit(code(ChoirStaff)) Identical to code(StaffGroup) except that the contained staffs are not connected vertically. -COMMENT(Odd spelling of "choir".) - -dit(code(Score)) This is the top level notation context. It is entered with -the code(\score) command rather than the code(\type) command. No +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(ChoireStaff) contexts. +code(ChoirStaff) contexts. ) @@ -1000,161 +1153,239 @@ 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)'. - +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(Lyrics properties) - description( - dit(code(textstyle)) Set the font for lyrics. The available -font choices are code(normaltext), code(roman), code(italic), code(bold) +dit(code(textstyle)) Set the font for lyrics. The available font +choices are code(normaltext), code(roman), code(italic), code(bold) code(normaltext), code(large), code(Large), code(huge), 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 -1 to align the left end of the lyric with -the note; set to 1 to align the right end of the lyric with the note. -Set to 0 to align the center of the lyric with the note. - ) - dit(Voice properties) - - description( - dit(code(ydirection)) Determines the direction of -stems, subscripts, beams, slurs, and ties. Set to -1 to force them -down, 1 to force them up, or 0 to let LilyPond decide. This can be -used to distinguish between voices on the same staff. The +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 \left +to align the left end of the lyric with the note; set to \right to +align the right end of the lyric with the note. Set to \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. + +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. - dit(code(slurydirection)) Set to 0 for free choice of slur -direction, set to 1 to force slurs up, set to 0 to force slurs down. -The shorthands code(\slurup), code(\slurdown), and code(\slurboth) are -available. +this property. See also the identifiers code(\voiceone), +code(\voicetwo), code(\voicethree) and code(\voicefour). - 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(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(hshift)) Set to 1 to enable LilyPond to shift notes +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. +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(textalignment)) Controls alignment of superscripted and -subscripted text. Set to -1 to align the left end of the text with -the note; set to 1 to align the right end of the text with the note. -Set to 0 to align the center of the text with the note. - dit(code(textstyle)) Set the text style for superscripts and +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(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(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(Staff properties) +subsubsubsect(Staff properties) - description( +description( - dit(code(defaultclef)) Determines the default clef. See code(\clef) - keyword. +dit(code(defaultclef)) Determines the default clef. See code(\clef) +keyword. - dit(code(nolines)) If set to 1, then the staff has only one line instead - of the usual five lines. - - dit(code(barAlways)) If set to 1 a bar line is drawn after each note. +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. +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)) Specify a character to print for the 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 = "C" +\time 2/2; a2^"C" a2 \time 2/2; +\property Staff.timeSignatureStyle = "old3_2" +a2_"old3\_2" a2 \time 2/2; +\property Staff.timeSignatureStyle = "oldC" +a2^"oldC" a2 \time 2/2; +\property Staff.timeSignatureStyle = "old6_4" +a2_"old6\_4" a2 \time 2/2; +\property Staff.timeSignatureStyle = "old9_4" +a2^"old9\_4" a2 +} +) - dit(code(defaultBarType)) Sets the default type of bar line. See - code(\bar) keyword. +COMMENT( timeSignatureSymbol? timeSignatureChar? ) - 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. -COMMENT(Check that this works) - dit(code(midi_instrument)) Sets the instrument for MIDI output. +subsubsubsect(GrandStaff properties) - dit(code(transposing)) Tranpose the MIDI output. -COMMENT(What syntax? "0 c" "2 c" ???) +description( - dit(code(ydirection)) What does this do in staff ??? -) - - dit(GrandStaff properties) +dit(code(maxVerticalAlign)) Set the maximum vertical distance between +staffs. - description( - dit(code(maxVerticalAlign)) - dit(code(minVerticalAlign)) - ) +dit(code(minVerticalAlign)) Set the minimum vertical distance between +staffs. - dit(Score properties) +) - description( - dit(code(part)) Set to a part number for music with several parts. - Each part has its own code(\score) block with a different part setting. - dit(code(SkipBars)) ??? +subsubsubsect(Score properties) - dit(code(beamquantisation)) Set to 0 for no quantization. Set to 1 to - quantize position and slope. Set to 2 to avoid wedges. These three - settings are available via code(\beamposfree), code(\beamposnormal), and - code(\beampostraditional). +description( - dit(code(beamslopedamping)) Set to 0 for undamped beams. Set to 1 for - damped beams. Set to 100000 for beams with zero slope. The identifiers - code(\beamslopeproportional), code(\beamslopedamped), and - code(\beamslopezero) each set the corresponding value. - ) - -) +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-column-engraver.cc: "barColumnPriority" -bar-number-engraver.cc: "barNumberBreakPriority" -bar-number-engraver.cc: "barScriptPadding" -dynamic-engraver.cc: "dynamicdir" -mark-engraver.cc: "markScriptPadding" -mark-engraver.cc: "markBreakPriority" -span-bar-engraver.cc: "singleStaffBracket" -staff-margin-engraver.cc:"marginBreakPriority" -stem-engraver.cc: "abbrev" +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 ) -sec(Pre-defined Identifiers) +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(\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. @@ -1162,10 +1393,13 @@ 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(\shift)) Enable note heads that collide with other note heads -to be shifted horiztonally. This sets the Voice.hshift property. +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 @@ -1179,40 +1413,203 @@ 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.ydirectoin property. +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(The code(\paper) Block) +label(paper) The code(\paper) block may begin with an optional identifier reference. No identifier references are allowed anywhere else in the block. -The keywords code(\shape), code(\output) and code(\translator) may +The keywords code(\shape), code(\)code(output) and code(\translator) may appear in this block. In addition, variable assignments may appear. The variables control layout details and are set to reasonable -defaults that depend on the font size in use. +defaults 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). subsect(Paper variables) +There are a large number of paper variables that are used to set internal +details of the layout. Usually you will not want to change these variables. +Two variables that you may want to change are code(linewidth) and code(indent). + 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 font. - -dit(code(arithmetic_basicspace)) -dit(code(arithmetic_multiplier)) -dit(code(basicspace)) -dit(code(beam_thickness)) Specify the thickness of beams -dit(code(geometric)) +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 +verb(arithmetic_multiplier * ( c + time )) +where code(time) is the amount of time a note occupies. The value of +code(c) is affected by code(arithmetic_basicspace). Increasing +code(arithmetic_basicspace) will increase code(c). +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)) -dit(code(internote)) +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, then a single unjustified line is produced. -dit(code(notewidth)) +-1.0, then a single unjustified line is produced. +dit(code(notewidth)) Width of an average note head. dit(code(rulethickness)) Determines thickness of staff lines and bars. -dit(code(staffheight)) -dit(code(unitspace)) +dit(code(slur_clip_angle)) +dit(code(slur_clip_height)) +dit(code(slur_clip_ratio)) +dit(code(slur_height_limit)) +dit(code(slur_ratio)) +dit(code(slur_rc_factor)) +dit(code(slur_slope_damping)) +dit(code(slur_thickness)) +dit(code(slur_x_gap)) +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(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. The +default contexts are all defined in file(engraver.ly). An easy way to +change the behavior of a context is to copy the definition from that +file and modify it. + +The first thing that appears inside a code(\translator) +definition is the type of the context being created. There are +four types: +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. ) + +After the type of the context is specified, property assignments and +code(\consists) and code(\accepts) keywords can appear in any order. +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 which handles a certain notation. +Here is a list +of the engravers. + +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(Note_heads_engraver)) Engraves note heads. Normally in code(Voice). +Removing this gives a fatal error. +COMMENT(Perhaps should be Note_head_engraver) +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(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). +COMMENT(perhaps should be named Tie_engraver?) +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(Vertical_align_engraver)) +) + diff --git a/Documentation/tex/tutorial.yo b/Documentation/tex/tutorial.yo index a8e7f025e2..30feb2d0e6 100644 --- a/Documentation/tex/tutorial.yo +++ b/Documentation/tex/tutorial.yo @@ -976,9 +976,9 @@ mudela()(\score{ \notes \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } \paper { linewidth = -1.; - Staff = \translator { + \translator { \type "Line_group_engraver_group"; - + Staff ; defaultclef = violin; \consists "Timing_engraver"; @@ -1000,9 +1000,9 @@ mudela()( \notes \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } \paper{ linewidth = -1.; - Staff = \translator { + \translator { \type "Line_group_engraver_group"; - defaultclef = violin; + defaultclef = violin;Staff; \consists "Time_signature_engraver"; \consists "Separating_line_group_engraver"; \accepts "Voice"; @@ -1018,9 +1018,9 @@ mudela()( \notes \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } \paper{ linewidth = -1.; - Staff = \translator { + \translator { \type "Line_group_engraver_group"; - defaultclef = violin; + defaultclef = violin;Staff ; \consists "Bar_engraver"; \consists "Time_signature_engraver"; \consists "Separating_line_group_engraver"; @@ -1036,9 +1036,9 @@ mudela()(\score{ \notes\relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } \paper { linewidth = -1.; - Staff = \translator { + \translator { \type "Line_group_engraver_group"; - + Staff ; defaultclef = violin; \consists "Bar_engraver"; \consists "Time_signature_engraver"; @@ -1057,9 +1057,9 @@ mudela()(\score { \notes \relative c' {\clef alto; \time 2/4; g'4 c,4 a'4 f4 e c d2 } \paper { linewidth = -1.; - Staff = \translator { + \translator { \type "Line_group_engraver_group"; - + Staff; defaultclef = violin; \consists "Bar_engraver"; \consists "Time_signature_engraver"; @@ -1574,10 +1574,15 @@ verb( \translator { \type "Engraver_group_engraver"; + + "ContextName" + \accepts "..."; \accepts "..."; \accepts "..."; + + \consists " ... "; \consists " ... "; \consists " ... "; @@ -1635,29 +1640,13 @@ mycode(Timing_engraver). mudela(verbatim)( polymetricpaper = \paper { Score = \translator { - \type Score_engraver; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; - % \consists "Timing_engraver"; % removed Timing_engraver - \accepts "Staff"; + \ScoreContext + \remove "Timing_engraver"; } Staff = \translator { - \type "Line_group_engraver_group"; - - defaultclef = violin; - - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Timing_engraver"; % added Timing_engraver - \consists "Staff_sym_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; + \StaffContext + \consists "Timing_engraver"; } } \score { diff --git a/NEWS b/NEWS index 855cc07ca3..96802004bc 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,26 @@ + + +pl 12.hwn1 + - \remove "Engraver_type"; + - \output "bla" -> output = "bla" (mudela 0.1.6) + - \property defaultclef -> \property defaultClef + - naming of access_{Engraver,Performer,Translator_group} () + - changed syntax for \translator in \paper{} (mudela 0.1.6) + - declared contexts: + + StaffContext = \translator { .. } + \translator { \StaffContext } + + - elt_b -> elem_b + - bf: add Separating_line_group_engraver to RhythmicStaff. + + +pl 12.am1 + - large doc patch, ChoireStaff -> ChoirStaff + +******* +pl 12 + pl 11.uu2 - added Transposed_music for mixing transposition and relative diff --git a/TODO b/TODO index b25fa11e4b..de989a1974 100644 --- a/TODO +++ b/TODO @@ -11,28 +11,6 @@ grep for TODO and ugh/ugr/urg ydirection <-> yDirection - * - \score{ - \notes { \property Staff.defaultclef = bass a b c d } - \paper{ - - - Staff = \translator { - \type "Line_group_engraver_group"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Separating_line_group_engraver"; - \accepts "Voice"; - } - } -} - * typo checks on property names? * egcs-1.1 support diff --git a/VERSION b/VERSION index 75df7b13ab..6a630939a4 100644 --- a/VERSION +++ b/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=0 PATCH_LEVEL=12 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=hwn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/genheader.py b/buildscripts/genheader.py index 2c1d6be308..4dbb07f358 100644 --- a/buildscripts/genheader.py +++ b/buildscripts/genheader.py @@ -4,7 +4,7 @@ # # source file of the GNU LilyPond music typesetter # -# (c) 1997 Han-Wen Nienhuys +# (c) 1997--1998 Han-Wen Nienhuys import os import sys diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py index 3f4d99006d..3f85164681 100644 --- a/buildscripts/mf-to-table.py +++ b/buildscripts/mf-to-table.py @@ -4,7 +4,7 @@ # # source file of the GNU LilyPond music typesetter # -# (c) 1997 Han-Wen Nienhuys +# (c) 1997 Han-Wen Nienhuys import os import sys @@ -14,7 +14,6 @@ import regex import regsub import time -sys.path.append ('@abs-step-bindir@') (options, files) = getopt.getopt( sys.argv[1:], 'a:d:hl:o:p:t:', diff --git a/flower/dictionary.cc b/flower/dictionary.cc index 3f46028fa8..2d200f2e5a 100644 --- a/flower/dictionary.cc +++ b/flower/dictionary.cc @@ -18,7 +18,7 @@ public: Dictionary (Dictionary const&); T &elem (String s); T const &elem (String s) const; - bool elt_b (String s) const; + bool elem_b (String s) const; void add (String, T); void clear (); } diff --git a/flower/dstream.cc b/flower/dstream.cc index fc15680d92..784bf36fbe 100644 --- a/flower/dstream.cc +++ b/flower/dstream.cc @@ -53,9 +53,9 @@ Dstream::identify_as (String name) String cl (strip_member (mem)); String idx = cl; - if (silent_assoc_p_->elt_b (mem)) + if (silent_assoc_p_->elem_b (mem)) idx = mem; - else if (silent_assoc_p_->elt_b (cl)) + else if (silent_assoc_p_->elem_b (cl)) idx = cl; else { @@ -74,7 +74,7 @@ Dstream::identify_as (String name) bool Dstream::silent_b (String s) const { - if (!silent_assoc_p_->elt_b (s)) + if (!silent_assoc_p_->elem_b (s)) return false; return (*silent_assoc_p_)[s]; } @@ -162,7 +162,7 @@ Dstream::Dstream (ostream *r, char const * cfg_nm) (*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar (r[1])); } - if ((*silent_assoc_p_).elt_b ("Dstream_default_silence")) + if ((*silent_assoc_p_).elem_b ("Dstream_default_silence")) default_silence_b_ = (*silent_assoc_p_)["Dstream_default_silence"]; } diff --git a/flower/include/assoc.hh b/flower/include/assoc.hh index 3840b4bd5a..c0b3f5fa01 100644 --- a/flower/include/assoc.hh +++ b/flower/include/assoc.hh @@ -55,11 +55,11 @@ struct Assoc { return arr.size() -1; } public: - bool elt_b (K key) const { + bool elem_b (K key) const { return find (key) >= 0; } void del (K key) { - assert (elt_b (key)); + assert (elem_b (key)); int i= find (key); arr[i].free = true; } @@ -77,7 +77,7 @@ public: return elem (key); } V const & elem (K key) const { - assert (elt_b (key)); + assert (elem_b (key)); return arr[find (key)].val; } void clear () diff --git a/flower/include/interval.hh b/flower/include/interval.hh index 9468fae487..20f5987e43 100644 --- a/flower/include/interval.hh +++ b/flower/include/interval.hh @@ -100,7 +100,7 @@ struct Interval_t { } String str() const; void print () const; - bool elt_b (T r); + bool elem_b (T r); void negate () { T r = -left; T l = -right; diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc index 382ec67523..537b9236cf 100644 --- a/flower/include/interval.tcc +++ b/flower/include/interval.tcc @@ -125,7 +125,7 @@ Interval_t::str() const template bool -Interval_t::elt_b (T r) +Interval_t::elem_b (T r) { return r >= left && r <= right; } diff --git a/init/bar-numbering.ly b/init/bar-numbering.ly index f7831b439c..e69de29bb2 100644 --- a/init/bar-numbering.ly +++ b/init/bar-numbering.ly @@ -1,22 +0,0 @@ -% bar-numbering.ly -% -Staff = \translator { - \type "Line_group_engraver_group"; - defaultclef = violin; - barColumnPriority = "0"; - - marginBreakPriority = "-4"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Time_signature_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; -} diff --git a/init/book-fragment.ly b/init/book-fragment.ly index 242d28e061..a914919400 100644 --- a/init/book-fragment.ly +++ b/init/book-fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly" diff --git a/init/book-init.ly b/init/book-init.ly index 4637aeba10..42f06c1a1d 100644 --- a/init/book-init.ly +++ b/init/book-init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly"; diff --git a/init/center-fragment.ly b/init/center-fragment.ly index 8a7fb5381e..20ef3e235a 100644 --- a/init/center-fragment.ly +++ b/init/center-fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly" diff --git a/init/center.ly b/init/center.ly index 035c39761b..441f9c0182 100644 --- a/init/center.ly +++ b/init/center.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly" diff --git a/init/engraver.ly b/init/engraver.ly index f8b85f92fe..2921a518c5 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -2,8 +2,10 @@ % setup for Request->Element conversion. Guru-only % -Staff = \translator { +StaffContext=\translator { \type "Line_group_engraver_group"; + Staff ; + %{ The Hara_kiri_line_group_engraver is a Line_group_engraver that will not typeset an empty line of staff, i.e., a line @@ -12,7 +14,6 @@ Staff = \translator { Hara_kiri_line_group_engraver. %} % \type "Hara_kiri_line_group_engraver"; - defaultclef = violin; \consists "Bar_engraver"; \consists "Clef_engraver"; @@ -43,16 +44,21 @@ Staff = \translator { (\property Staff.instrument; Staff.instr for subsequent lines) to the left of a staff. %} -%{ + marginBreakPriority = "-5"; + +%{ \consists "Staff_margin_engraver"; %} \consists "Separating_line_group_engraver"; \accepts "Voice"; -} -ChoireStaff = \translator { +}; + +\translator{\StaffContext } +\translator { \type "Line_group_engraver_group"; + ChoirStaff; \consists "Vertical_align_engraver"; \consists "Staff_group_bar_engraver"; \accepts "Staff"; @@ -62,21 +68,23 @@ ChoireStaff = \translator { } -RhythmicStaff = \translator -{ +RhythmicStaffContext=\translator{ \type "Line_group_engraver_group"; nolines = "1"; \consists "Pitch_squash_engraver"; - + \consists "Separating_line_group_engraver"; + RhythmicStaff; \consists "Bar_engraver"; \consists "Time_signature_engraver"; \consists "Staff_sym_engraver"; \accepts "Voice"; -} - -Voice = \translator { +}; +\translator{\RhythmicStaffContext} +VoiceContext = \translator { \type "Engraver_group_engraver"; \consists "Dynamic_engraver"; + Voice ; + \consists "Rest_engraver"; \consists "Dot_column_engraver"; \consists "Stem_engraver"; @@ -91,60 +99,55 @@ Voice = \translator { \consists "Ties_engraver"; \consists "Note_heads_engraver" ; \consists "Skip_req_swallow_translator"; - %\accepts "Thread"; -} - +}; -GrandStaff = \translator { +\translator {\VoiceContext} +\translator { \type "Line_group_engraver_group"; - + GrandStaff; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; \consists "Piano_bar_engraver"; minVerticalAlign = 1.5*\staffheight; - % This should come last \accepts "Staff"; } -StaffGroup = \translator { +\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"; - + StaffGroup; \accepts "Staff"; \accepts "RhythmicStaff"; \accepts "GrandStaff"; \accepts "Lyrics"; } -LyricVoice = \translator{ \type "Line_group_engraver_group"; + LyricVoice ; \consists "Separating_line_group_engraver"; \consists "Lyric_engraver"; \consists "Beam_req_swallow_translator"; \consists "Plet_swallow_engraver"; } -Lyrics = \translator { +\translator { \type "Line_group_engraver_group"; + Lyrics; \consists "Vertical_align_engraver"; \accepts "LyricVoice"; } -Score = \translator { +ScoreContext = \translator { \type Score_engraver; - + Score; \consists "Timing_engraver"; - % uncomment to bar numbers on a whole system. -%{ - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; -%} + \consists "Bar_column_engraver"; \consists "Span_score_bar_engraver"; \consists "Score_priority_engraver"; @@ -157,13 +160,84 @@ Score = \translator { \accepts "RhythmicStaff"; \accepts "Lyrics"; \accepts "GrandStaff"; - \accepts "ChoireStaff"; -} + \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"; + +}; + +\translator { + \type "Score_engraver"; + StupidScore; -StupidScore = \translator { - \type Score_engraver; \consists "Staff_sym_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"; + Staff; + defaultclef = violin; + barColumnPriority = "0"; + marginBreakPriority = "-4"; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Time_signature_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Staff_margin_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; +}; + +OrchestralScoreContext= \translator { + \type Score_engraver; + Score; + barScriptPadding = "2.0"; % dimension \pt + markScriptPadding = "4.0"; + barColumnPriority = "-4"; + markBreakPriority = "-4"; + + \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 "GrandStaff"; +}; diff --git a/init/fragment.ly b/init/fragment.ly index 8a7fb5381e..20ef3e235a 100644 --- a/init/fragment.ly +++ b/init/fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly" diff --git a/init/init.fly b/init/init.fly index c7b8aff7dc..1ab82d8016 100644 --- a/init/init.fly +++ b/init/init.fly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly" diff --git a/init/init.ly b/init/init.ly index 02c6e14ff1..f3622d278d 100644 --- a/init/init.ly +++ b/init/init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.4"; +\version "1.0.6"; \include "declarations.ly"; diff --git a/init/paper16.ly b/init/paper16.ly index aa7095fa2b..af51b3277a 100644 --- a/init/paper16.ly +++ b/init/paper16.ly @@ -6,7 +6,7 @@ -\version "1.0.4"; +\version "1.0.6"; paper_sixteen = \paper { staffheight = 16.0\pt; diff --git a/init/paper20.ly b/init/paper20.ly index 6f53e8b870..ecc8a3eac7 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -5,7 +5,7 @@ \include "table13.ly"; \include "table16.ly"; -\version "1.0.4"; +\version "1.0.6"; paper_twenty = \paper { staffheight = 20.0\pt; @@ -13,8 +13,8 @@ paper_twenty = \paper { papersize = "a4"; % ugh see table20 for sizes - quartwidth = 6.61\pt - wholewidth = 9.90\pt + quartwidth = 6.61\pt; + wholewidth = 9.90\pt; arithmetic_basicspace = 2.; diff --git a/init/performer.ly b/init/performer.ly index a4cee69b75..be6707238a 100644 --- a/init/performer.ly +++ b/init/performer.ly @@ -1,57 +1,68 @@ % % setup for Request->Element conversion. Guru-only % - -Staff = \translator { +\translator { \type "Staff_performer"; \accepts Voice; + Staff; \consists "Key_performer"; \consists "Time_signature_performer"; } -Thread =\translator +\translator { \type "Performer_group_performer"; + Thread ; \consists "Note_performer"; } - -Voice = \translator +\translator { \type "Performer_group_performer"; \accepts Thread; +Voice; } - -GrandStaff = \translator +\translator { \type "Performer_group_performer"; \accepts Staff; -} -LyricVoice = \translator { +GrandStaff;} + +\translator { \type "Performer_group_performer"; \consists "Lyric_performer"; +LyricVoice; } - -Lyrics = \translator { +\translator{ + \type "Performer_group_performer"; + ChoirStaff; + \accepts Staff; +} +\translator { \type "Staff_performer"; \accepts LyricVoice; + Lyrics; \consists "Time_signature_performer"; } - -StaffGroup = \translator +\translator { \type Performer_group_performer; + + StaffGroup; \accepts Staff; } - -Score = \translator { +\translator { \type "Score_performer"; + + + Score; instrument = piano; \accepts Staff; \accepts GrandStaff; \accepts Lyrics; \accepts StaffGroup; + \accepts ChoirStaff; \consists "Swallow_performer"; } diff --git a/init/score-bar-numbering.ly b/init/score-bar-numbering.ly index a3da56b279..e69de29bb2 100644 --- a/init/score-bar-numbering.ly +++ b/init/score-bar-numbering.ly @@ -1,26 +0,0 @@ -% score-bar-numbering.ly - -Score = \translator { - \type Score_engraver; - barScriptPadding = "2.0"; % dimension \pt - markScriptPadding = "4.0"; - barColumnPriority = "-4"; - markBreakPriority = "-4"; - - \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 "ChoireStaff"; - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "Lyrics"; - \accepts "GrandStaff"; -} - diff --git a/init/score-paper.ly b/init/score-paper.ly index f4e170a732..e69de29bb2 100644 --- a/init/score-paper.ly +++ b/init/score-paper.ly @@ -1,29 +0,0 @@ -%score-paper.ly - -\paper { - % for simple testing only! -% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn -Staff = \translator { - \type "Hara_kiri_line_group_engraver"; - - defaultclef = violin; - barColumnPriority = "0"; - marginBreakPriority = "-4"; - - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Time_signature_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Staff_margin_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; -} - -\include "score-bar-numbering.ly"; - -} diff --git a/input/example-3.ly b/input/example-3.ly index eb8c8c48f9..dedefdc038 100644 --- a/input/example-3.ly +++ b/input/example-3.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c{ c'' d e f diff --git a/input/keys.ly b/input/keys.ly index 84738b6ed9..d5f945ffab 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; blah = \notes { @@ -20,6 +20,6 @@ blah = \notes { } \score{ - \blah + \type Staff \blah } diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 2baeadd3ca..aeeaa4f93a 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -10,7 +10,7 @@ copyright = "public domain"; Tested Features: example file with comments %} -\version "1.0.4"; +\version "1.0.6"; % the % is a comment. diff --git a/input/part.ly b/input/part.ly index 7ee17905f3..40a62279be 100644 --- a/input/part.ly +++ b/input/part.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; -part = \{ +\version "1.0.6"; +part = \notes { c-1 c c c r1*3 c4-5 c c c @@ -10,29 +10,18 @@ part = \{ a4 = \paper{ linewidth= 80.\mm; - Staff = \translator { - \type "Engraver_group_engraver"; - defaultclef = violin; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Meter_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; + \translator { + \StaffContext + \consists "Bar_column_engraver"; \consists "Bar_number_engraver"; - \consists "Separating_line_group_engraver"; - \consists "Line_group_engraver"; - \accepts "Voice"; + } } \score{ < \notes{ - \property Score.part = 1 \part } > @@ -42,7 +31,6 @@ a4 = \paper{ \score{ < \notes{ - \property Score.part = 0 \part } > diff --git a/input/pedal.ly b/input/pedal.ly index deff27a0d7..3e466e4fcb 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -1,3 +1,7 @@ +% +% This file does not work. +% + % pedal.ly % % Johann Sebastian Bach @@ -24,7 +28,7 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "1.0.4"; +\version "1.0.6"; \score{ \notes { diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index b7848e8af0..80ce97738b 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -23,7 +23,7 @@ * organ staff... %} -\version "1.0.4"; +\version "1.0.6"; diff --git a/input/rhythm.ly b/input/rhythm.ly index ee8e9d6b9d..197df1fda6 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -7,12 +7,11 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; -\version "1.0.4"; +\version "1.0.6"; ritme = \notes\transpose c'' { - \partial 8; - \time 4/4; + \partial 8; c8 | [a8~ a8. a8 a16 a16 a16] c4. | % watch the beams! @@ -37,11 +36,15 @@ ritme = \notes\transpose c'' { another = - \notes{ \time 4/4; - c1. c1. c4 c4 c4 c4 \time 4/4; c1 c1 c1 + \notes{ \time 6/4; + c1. c1. \time 4/4;c4 c4 c4 c4 c1 c1 c1 } +% +% Beams are incorrect for the next staff. They cut through the whole notes. +% + yanother = \notes{ \time 4/4; c1 c1 c1 c4 c4 c4 c4 c1 c1 c1 @@ -60,57 +63,17 @@ yanother = \paper{ %% remove Timing_engraver and Bar_number_engraver - Score = \translator { - \type Score_engraver; - - %\consists "Timing_engraver"; - - \consists "Span_score_bar_engraver"; - \consists "Score_priority_engraver"; - \consists "Priority_horizontal_align_engraver"; - \consists "Vertical_align_engraver"; - - - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "Lyrics"; - \accepts "GrandStaff"; -} - -RhythmicStaff = \translator -{ - \type "Engraver_group_engraver"; - nolines = "1"; - \consists "Pitch_squash_engraver"; - - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - \consists "Bar_engraver"; - \consists "Meter_engraver"; - \consists "Staff_sym_engraver"; - \consists "Line_group_engraver"; - \consists "Timing_engraver"; - \accepts "Voice"; -} - %% add Timing_engraver to the staff - Staff = \translator { - \type "Engraver_group_engraver"; - defaultclef= violin; - - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - \consists "Timing_engraver"; - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Meter_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - - \consists "Line_group_engraver"; - \accepts "Voice"; - } + \translator { + \ScoreContext + \remove "Timing_engraver"; + } + \translator { + \RhythmicStaffContext + \consists "Timing_engraver"; + } + \translator{ + \StaffContext + \consists "Timing_engraver"; + } } } diff --git a/input/scales.ly b/input/scales.ly index 08741e0259..de9a2c496b 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -1,3 +1,7 @@ +% +% This file prints lots of warning messages about scripts-dportato +% + \header{ filename = "scales.ly"; enteredby = "HWN"; @@ -12,7 +16,7 @@ copyright = "public domain"; % scales with accents. % -\version "1.0.4"; +\version "1.0.6"; blah = \notes { \time 6/8; \transpose c { diff --git a/input/scripts.ly b/input/scripts.ly index 2de3a30b85..869836046b 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; +\version "1.0.6"; blah = \notes{ \transpose c'' { diff --git a/input/test/abbrev.ly b/input/test/abbrev.ly index 38cfe3e795..6230a2acb0 100644 --- a/input/test/abbrev.ly +++ b/input/test/abbrev.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes \transpose c'''{ \stemup diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly index ec1e8e9f65..895c1b5b26 100644 --- a/input/test/bar-scripts.ly +++ b/input/test/bar-scripts.ly @@ -1,7 +1,7 @@ -\version "1.0.4"; +\version "1.0.6"; onestaff = \type Staff = foo\notes { \property Staff.instr = instr @@ -18,55 +18,10 @@ grstaff = \notes \type GrandStaff < \type Staff = bufl { c1 c2 } > -scpaper = \paper {Score = \translator { - \type Score_engraver; - barScriptPadding = "2.0"; % dimension \pt - markScriptPadding = "4.0"; - barColumnPriority = "-4"; - markBreakPriority = "-4"; - barNumberBreakPriority = "-4"; - - \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 "ChoireStaff"; - \accepts "StaffGroup"; - \accepts "Staff"; - \accepts "RhythmicStaff"; - \accepts "Lyrics"; - \accepts "GrandStaff"; -}} +scpaper = \paper {\translator {\OrchestralScoreContext}} -stpaper =\paper{ -Staff = \translator { - \type "Line_group_engraver_group"; - defaultclef = violin; - barColumnPriority = "0"; - barNumberBreakPriority = "0"; - marginBreakPriority = "-4"; - - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Time_signature_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Mark_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - \consists "Separating_line_group_engraver"; - \consists "Staff_margin_engraver"; - \accepts "Voice"; -}} +stpaper =\paper{ \BarNumberingStaffContext } scscore = \score { \grstaff \paper { \scpaper }} diff --git a/input/test/beam-chord.ly b/input/test/beam-chord.ly index e0200c2744..fe5b0aa074 100644 --- a/input/test/beam-chord.ly +++ b/input/test/beam-chord.ly @@ -1,5 +1,7 @@ +\version "1.0.4"; + \score{ - \melodic\transpose c'{ + \notes\transpose c'{ \property Score.beamquantisation = \none [a'8 diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly index 76d640ade5..41cdc2e5e4 100644 --- a/input/test/beam-pos.ly +++ b/input/test/beam-pos.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes\transpose c''{ diff --git a/input/test/beams.ly b/input/test/beams.ly index 89be9bec73..d961f90d86 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -6,7 +6,7 @@ copyright = "PD"; TestedFeatures = "beams and beamflags"; } -\version "1.0.4"; +\version "1.0.6"; \score{ < diff --git a/input/test/broken.ly b/input/test/broken.ly index d08dae39ef..7ac2085fc7 100644 --- a/input/test/broken.ly +++ b/input/test/broken.ly @@ -1,11 +1,11 @@ \header{ enteredby = "jcn"; copyright = "PD"; -TestedFeatures = "This file tests Feta embedded slurs" +TestedFeatures = "This file tests Feta embedded slurs" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.4"; +\version "1.0.6"; shortlong = \notes{ c4()c( c c | diff --git a/input/test/clefs.ly b/input/test/clefs.ly index d4d07a45cf..4e0ea68389 100644 --- a/input/test/clefs.ly +++ b/input/test/clefs.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score { \notes{ diff --git a/input/test/collisions.ly b/input/test/collisions.ly index b99931cf4a..c545798657 100644 --- a/input/test/collisions.ly +++ b/input/test/collisions.ly @@ -5,11 +5,11 @@ enteredby = "HWN,JCN"; copyright = "public domain"; Tested = "test the Collision resolution "; } -\version "1.0.4"; +\version "1.0.6"; -two_voice = \notes +twovoice = \notes \type Staff < { \stemdown c4 d e f g2~ g4 a [c8 d e f] c2| } @@ -18,7 +18,7 @@ two_voice = \notes > -two_voice_steminvert = \notes +twovoicesteminvert = \notes \type Staff < { \stemup @@ -29,7 +29,7 @@ two_voice_steminvert = \notes > -three_voice = \notes +threevoice = \notes \type Staff < { \stemup g4 f e f g a g2 } @@ -76,9 +76,9 @@ restsII = \notes { } \score{ - \notes \transpose c' { \two_voice - \two_voice_steminvert - \three_voice + \notes \transpose c' { \twovoice + \twovoicesteminvert + \threevoice \rests % UGH ! bug! %\restsII diff --git a/input/test/defaultbars.ly b/input/test/defaultbars.ly index a3cf882cf2..c0654ac96d 100644 --- a/input/test/defaultbars.ly +++ b/input/test/defaultbars.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score { diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly index 8ea926c808..3f06328cda 100644 --- a/input/test/denneboom.ly +++ b/input/test/denneboom.ly @@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes"; \include "paper20.ly" -\version "1.0.4"; +\version "1.0.6"; oden = \lyric{ O8 | diff --git a/input/test/dotted-slur.ly b/input/test/dotted-slur.ly index 80fc0c07cf..03db2071a0 100644 --- a/input/test/dotted-slur.ly +++ b/input/test/dotted-slur.ly @@ -1,15 +1,15 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes{ c( d e )c | - \slurdotted; + \slurdotted c( d e )c | - \slurnormal; + \slurnormal c( d e )c | \property Voice.slurdash = 3 c( d e )c | - \slurnormal; + \slurnormal c( d e )c | } \paper{ @@ -20,3 +20,4 @@ } } + diff --git a/input/test/find-quarts.ly b/input/test/find-quarts.ly index 1b1f7eac8a..91a236b2b5 100644 --- a/input/test/find-quarts.ly +++ b/input/test/find-quarts.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes \relative c { diff --git a/input/test/font-body.ly b/input/test/font-body.ly index 47518dabb8..d4c2e7c487 100644 --- a/input/test/font-body.ly +++ b/input/test/font-body.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; FontBody= \notes\transpose c''{ \bar "|:"; diff --git a/input/test/font.ly b/input/test/font.ly index 4fcb9dac5e..9d38c7f5f3 100644 --- a/input/test/font.ly +++ b/input/test/font.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.4"; +\version "1.0.6"; \include "font-body.ly" \score{ @@ -21,7 +21,7 @@ description = "This file tests the Feta music font"; \paper_twenty linewidth = 17.5 \cm; gourlay_maxmeasures =5.; - \output "font20.tex"; + \output = "font20.tex"; } } diff --git a/input/test/font16.ly b/input/test/font16.ly index 377a95ac05..3b1364e181 100644 --- a/input/test/font16.ly +++ b/input/test/font16.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.4"; +\version "1.0.6"; \include "font-body.ly" \score{ diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly index 51c2d0f60f..38dd6faa52 100644 --- a/input/test/gourlay.ly +++ b/input/test/gourlay.ly @@ -4,7 +4,7 @@ copyright = "PD"; TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "1.0.4"; +\version "1.0.6"; %{ @@ -14,11 +14,11 @@ This is taken from [Gourlay]'s paper on breaking lines \score{ \notes \type Staff \transpose c''< - { \stemup; d2 d | d d | d4 d2. | \break; c1 } - \transpose c, { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 } + { \stemup d2 d | d d | d4 d2. | \break c1 } + \transpose c, { \stemdown g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 } > \paper{ - linewidth = 8.\cm; + linewidth = 8.\cm } } diff --git a/input/test/grace.ly b/input/test/grace.ly index 86e3c94d2c..a769b569c5 100644 --- a/input/test/grace.ly +++ b/input/test/grace.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; +\version "1.0.6"; \include "table13.ly"; \include "table16.ly"; diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly index f4f6807837..66a786342c 100644 --- a/input/test/hara-kiri.ly +++ b/input/test/hara-kiri.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; toeter_i = \notes\relative c { \property Staff.instrument = "Toeters" diff --git a/input/test/keys.ly b/input/test/keys.ly index f1167e53a6..e47814a6bc 100644 --- a/input/test/keys.ly +++ b/input/test/keys.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; %{ test key itemv breaking diff --git a/input/test/knee.ly b/input/test/knee.ly index afefec8948..ae746715e1 100644 --- a/input/test/knee.ly +++ b/input/test/knee.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes\relative c'{ [c16 \stemdown c'' \stemboth c,, d] diff --git a/input/test/mark.ly b/input/test/mark.ly index 2ffb0f71e3..8feb99bfa4 100644 --- a/input/test/mark.ly +++ b/input/test/mark.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; global = \notes { s1 | \mark "A"; diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly index 7b694a526c..54bd95e755 100644 --- a/input/test/multi-rest.ly +++ b/input/test/multi-rest.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; voice_one = \notes\transpose c' { \stemup R1 * 2 | f'4-. r r2 | R1 * 3 | diff --git a/input/test/ossia.ly b/input/test/ossia.ly index b8be66d9d0..05d8229156 100644 --- a/input/test/ossia.ly +++ b/input/test/ossia.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; \score { diff --git a/input/test/score-bar-scripts.ly b/input/test/score-bar-scripts.ly index 9cc3670809..102dfc59e6 100644 --- a/input/test/score-bar-scripts.ly +++ b/input/test/score-bar-scripts.ly @@ -1,7 +1,7 @@ -\version "1.0.4"; +\version "1.0.6"; onestaff = \type Staff = foo\notes { \property Staff.instr = instr @@ -32,7 +32,7 @@ scpaper = \paper {Score = \translator { \consists "Priority_horizontal_align_engraver"; \consists "Vertical_align_engraver"; - \accepts "ChoireStaff"; + \accepts "ChoirStaff"; \accepts "StaffGroup"; \accepts "Staff"; \accepts "RhythmicStaff"; diff --git a/input/test/sleur.ly b/input/test/sleur.ly index db1338d5d8..3a5ac5dce6 100644 --- a/input/test/sleur.ly +++ b/input/test/sleur.ly @@ -1,11 +1,11 @@ \header{ enteredby = "jcn"; copyright = "PD"; -TestedFeatures = "This file tests Feta embedded slurs" +TestedFeatures = "This file tests Feta embedded slurs" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.4"; +\version "1.0.6"; shortlong = \notes{ c4()c( c c | diff --git a/input/test/slur-bug.ly b/input/test/slur-bug.ly index 6bd9773103..edee54434d 100644 --- a/input/test/slur-bug.ly +++ b/input/test/slur-bug.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; % bug % excentric slur can't handle this ... diff --git a/input/test/slur-damping.ly b/input/test/slur-damping.ly index 8199d2a769..43c422d38e 100644 --- a/input/test/slur-damping.ly +++ b/input/test/slur-damping.ly @@ -1,5 +1,5 @@ % test damping -\version "1.0.4"; +\version "1.0.6"; \score{ \notes\relative c'{ diff --git a/input/test/slur-swap.ly b/input/test/slur-swap.ly index a4b712da93..8b24a4e5a2 100644 --- a/input/test/slur-swap.ly +++ b/input/test/slur-swap.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; % urg, the direction of the slur gets swapped! \score{ diff --git a/input/test/slurs.ly b/input/test/slurs.ly index 065f3209fd..459ed7e48f 100644 --- a/input/test/slurs.ly +++ b/input/test/slurs.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; +\version "1.0.6"; \score{ \notes\transpose c'{ @@ -29,5 +29,4 @@ c c c )c | } } - } } diff --git a/input/test/spacing.ly b/input/test/spacing.ly index 1a177c47b9..6ba7255550 100644 --- a/input/test/spacing.ly +++ b/input/test/spacing.ly @@ -6,7 +6,7 @@ copyright = "public domain"; TestedFeatures = "This file tests various spacings"; } -\version "1.0.4"; +\version "1.0.6"; multipart = \notes{ \type StaffGroup < diff --git a/input/test/stem.ly b/input/test/stem.ly index 6b40f48841..667be275d6 100644 --- a/input/test/stem.ly +++ b/input/test/stem.ly @@ -8,7 +8,7 @@ of beams"; } -\version "1.0.4"; +\version "1.0.6"; beamintervals = \notes{ \time 7/4; diff --git a/input/test/test-lyrics.ly b/input/test/test-lyrics.ly index ce992078a0..39eb2e13bc 100644 --- a/input/test/test-lyrics.ly +++ b/input/test/test-lyrics.ly @@ -1,7 +1,7 @@ -\version "1.0.4"; +\version "1.0.6"; $somewhat_long = \lyric{ - \textstyle "roman" ; + \property Lyrics . textstyle = "roman" AaaaaaA2 BbbbbbB2 CcccccC2 @@ -11,7 +11,7 @@ $somewhat_long = \lyric{ } $rather_long = \lyric{ - \textstyle "roman" ; + \property Lyrics . textstyle = "roman" LLLLoooonggggg2 Syyllllaaabbble2 LLLLoooonggggg2 @@ -21,7 +21,7 @@ $rather_long = \lyric{ } $quite_long = \lyric{ - \textstyle "roman" ; + \property Lyrics . textstyle = "roman" LLLLLLLLLooooongggggggg2 Syyyyyyyyyyyyylllllllaaaaaabbble2 LLLLLLLLLooooongggggggg2 diff --git a/input/test/tie-bug.ly b/input/test/tie-bug.ly index 15f7e0b499..1b21d5308b 100644 --- a/input/test/tie-bug.ly +++ b/input/test/tie-bug.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; % middle tie is wrong diff --git a/input/test/tie.ly b/input/test/tie.ly index e94930d739..cddf1e9cc8 100644 --- a/input/test/tie.ly +++ b/input/test/tie.ly @@ -1,4 +1,4 @@ -\version "1.0.4"; +\version "1.0.6"; tie = \notes\transpose c''{ diff --git a/input/test/title.ly b/input/test/title.ly index 2eafb8ae11..ae1b5ee610 100644 --- a/input/test/title.ly +++ b/input/test/title.ly @@ -10,7 +10,7 @@ source = "urtext"; instrument= "Instrument"; } -\version "1.0.4"; +\version "1.0.6"; \score{ \notes diff --git a/input/test/transposition.ly b/input/test/transposition.ly index 18f742d127..8483b8735c 100644 --- a/input/test/transposition.ly +++ b/input/test/transposition.ly @@ -6,7 +6,7 @@ I have extend Mats' patches to allow accidental transposition: = \transpose d => \keysignature gis; -As you can see in output the example file "test.ly" there are a few problems left: +As you can see in output = the example file "test.ly" there are a few problems left: - key undo (already in the Todo) - "wrong" transposition: e.g. \transpose d of fis-major = gis-major (better as-major?). The solution gis=as etc. would concern both note and key transposistion @@ -22,7 +22,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; vOne = \notes \relative c''{ \clef"violin"; diff --git a/input/test/vertical-align.ly b/input/test/vertical-align.ly index e80a68201c..b74d873faf 100644 --- a/input/test/vertical-align.ly +++ b/input/test/vertical-align.ly @@ -1,5 +1,5 @@ -\version "1.0.4"; +\version "1.0.6"; \score { \notes < @@ -14,22 +14,6 @@ > -\paper{ -Staff = \translator { - \type "Line_group_engraver_group"; - defaultclef = violin; +\paper{} - \consists "Bar_engraver"; - - \consists "Key_engraver"; - \consists "Local_key_engraver"; - \consists "Time_signature_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Separating_line_group_engraver"; - - \accepts "Voice"; -} -} } diff --git a/input/tril.ly b/input/tril.ly index 93d228e61f..1d3537747a 100644 --- a/input/tril.ly +++ b/input/tril.ly @@ -1,11 +1,11 @@ \header{ enteredby = "jcn"; copyright = "PD"; -TestedFeatures = "This file tests trills" +TestedFeatures = "This file tests trills" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.4"; +\version "1.0.6"; \score{ \notes{ diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index 842f3c4185..b934bf900a 100644 --- a/input/twinkle-pop.ly +++ b/input/twinkle-pop.ly @@ -12,7 +12,7 @@ copyright = "public domain"; Tested Features lyrics and chords %} -\version "1.0.4"; +\version "1.0.6"; melodie = \notes\relative c { \clef"violin"; diff --git a/input/twinkle.ly b/input/twinkle.ly index b2b888819d..739108a64a 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -20,7 +20,7 @@ traditional song in various languages. Tested Features: lyrics, interleaving lyrics and staffs %} -\version "1.0.4"; +\version "1.0.6"; melody = \notes \relative c'' { \clef violin; diff --git a/lily/VERSION b/lily/VERSION index 75df7b13ab..6a630939a4 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=0 PATCH_LEVEL=12 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=hwn1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc index 4f97c77fd7..d314f35385 100644 --- a/lily/change-iterator.cc +++ b/lily/change-iterator.cc @@ -60,11 +60,10 @@ Change_iterator::process_and_next (Moment m) Translator_group * dest = report_to_l ()->find_create_translator_l (to_type, to_id); current->remove_translator_p (last); - dest->add (last); + dest->add_translator (last); } else { - /* We could change the current translator's id, but that would make errors hard to catch diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 8915e7cfe5..8195fbd9bf 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -181,7 +181,7 @@ if (it_l) void Clef_engraver::do_creation_processing() { - Scalar def = get_property ("defaultclef"); + Scalar def = get_property ("defaultClef"); if (def.to_bool ()) // egcs: Scalar to bool is ambiguous set_type (def); diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index 8ac916b547..2dc0b4131b 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -30,7 +30,7 @@ Engraver_group_engraver::do_announces() Link_array groups = group_l_arr (); for (int i=0; i < groups.size(); i++) { - Engraver * eng = groups[i]->engraver_l (); + Engraver * eng = groups[i]->access_Engraver (); if (eng) { Engraver_group_engraver * group = @@ -52,7 +52,7 @@ Engraver_group_engraver::do_announces() info.req_l_ = &dummy_req; for (int i=0; i < nongroups.size(); i++) { // Is this good enough? - Engraver * eng = nongroups[i]->engraver_l (); + Engraver * eng = nongroups[i]->access_Engraver (); if (eng && eng!= info.origin_grav_l_arr_[0]) eng->acknowledge_element (info); } @@ -60,7 +60,7 @@ Engraver_group_engraver::do_announces() announce_info_arr_.clear (); for (int i=0; i < nongroups.size(); i++) { - Engraver * eng = nongroups[i]->engraver_l (); + Engraver * eng = nongroups[i]->access_Engraver (); if (eng) eng->process_acknowledged (); } @@ -77,7 +77,7 @@ Engraver_group_engraver::get_staff_info() const Link_array simple_translators = nongroup_l_arr (); for (int i=0; i < simple_translators.size(); i++) { - Engraver * eng = simple_translators[i]->engraver_l (); + Engraver * eng = simple_translators[i]->access_Engraver (); if (eng) eng->fill_staff_info (inf); } diff --git a/lily/engraver.cc b/lily/engraver.cc index 696bedcf2e..ecad055870 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -57,6 +57,6 @@ Engraver_group_engraver* Engraver::daddy_grav_l () const { return (daddy_trans_l_ ) - ? (Engraver_group_engraver*) daddy_trans_l_->engraver_l () + ? (Engraver_group_engraver*) daddy_trans_l_->access_Engraver () : 0; } diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index e6e5b7fe76..a8086af1f5 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -70,7 +70,7 @@ public: Engraver () {} DECLARE_MY_RUNTIME_TYPEINFO; - virtual Engraver * engraver_l () { return this; } + virtual Engraver * access_Engraver () { return this; } }; diff --git a/lily/include/music-output-def.hh b/lily/include/music-output-def.hh index 29f4c11aae..5940cc4177 100644 --- a/lily/include/music-output-def.hh +++ b/lily/include/music-output-def.hh @@ -21,11 +21,14 @@ */ class Music_output_def { + Scope *translator_p_dict_p_; public: - Dictionary translator_p_dict_; + Scope *scope_p_; + Array filename_str_arr_; + Music_output_def (Music_output_def const&); Music_output_def (); @@ -37,8 +40,8 @@ public: Global_translator *get_global_translator_p (); Translator_group *get_group_translator_p (String type) const; - void assign_translator (String, Translator*); - String outfile_str_; + String get_default_output () const; + void assign_translator (Translator*); Translator * find_translator_l (String) const; virtual int get_next_default_count () const; }; diff --git a/lily/include/paper-def.hh b/lily/include/paper-def.hh index aa8973d8a8..9c4a6b58fc 100644 --- a/lily/include/paper-def.hh +++ b/lily/include/paper-def.hh @@ -37,7 +37,6 @@ class Paper_def : public Music_output_def { Assoc *lookup_p_assoc_p_; - Scope* scope_p_; static int default_count_i_; protected: diff --git a/lily/include/performer.hh b/lily/include/performer.hh index 11fbdbb397..61fd1d2aba 100644 --- a/lily/include/performer.hh +++ b/lily/include/performer.hh @@ -27,7 +27,7 @@ public: protected: virtual int get_tempo_i() const; virtual void play (Audio_element * elem_p ); - Performer * performer_l () { return this; } + Performer * access_Performer () { return this; } }; diff --git a/lily/include/timing-engraver.hh b/lily/include/timing-engraver.hh index 9e0012a8e9..18aa404ab5 100644 --- a/lily/include/timing-engraver.hh +++ b/lily/include/timing-engraver.hh @@ -19,7 +19,7 @@ class Timing_engraver : public Timing_translator, public Engraver { protected: virtual void fill_staff_info (Staff_info&); - virtual Engraver * engraver_l () { return Engraver::engraver_l (); } + virtual Engraver * access_Engraver () { return Engraver::access_Engraver (); } public: TRANSLATOR_CLONE(Timing_engraver); DECLARE_MY_RUNTIME_TYPEINFO; diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index a1613cba60..1b1f05f004 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -25,20 +25,29 @@ typedef void (Translator::*Const_method_pointer)(void) const; hierarchically grouped #Translator#s */ class Translator_group : public virtual Translator { + Array consists_str_arr_; + Array accepts_str_arr_; + public: Pointer_list trans_p_list_; String id_str_; - Array consists_str_arr_; - Array accepts_str_arr_; + + + + int iterator_count_; TRANSLATOR_CLONE(Translator_group); DECLARE_MY_RUNTIME_TYPEINFO; + void set_acceptor (String accepts, bool add); + void set_element (String accepts, bool add); + + Translator_group(Translator_group const &); Translator_group(); - void add (Translator *); - + void add_translator (Translator *trans_p); + Link_array nongroup_l_arr () const; Link_array group_l_arr () const; @@ -53,6 +62,8 @@ public: Translator *remove_translator_p (Translator*trans_l); void check_removal (); + + Translator *get_simple_translator (char const *type) const; Translator_group *find_existing_translator_l (String n, String id); Translator_group *find_create_translator_l (String n, String id); @@ -61,7 +72,7 @@ public: Translator_group*get_default_interpreter(); protected: virtual ~Translator_group (); - virtual Translator_group * group_l () { return this; } + virtual Translator_group * access_Translator_group () { return this; } virtual void do_print () const; virtual void do_process_requests (); virtual void do_add_processing (); diff --git a/lily/include/translator.hh b/lily/include/translator.hh index b96d680721..57d45e4d98 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -66,9 +66,9 @@ public: Music_output_def *output_def_l () const; virtual Moment now_moment () const; - virtual Engraver *engraver_l () { return 0; } - virtual Performer *performer_l() { return 0; } - virtual Translator_group * group_l () { return 0; } + virtual Engraver *access_Engraver () { return 0; } + virtual Performer *access_Performer() { return 0; } + virtual Translator_group * access_Translator_group () { return 0; } protected: enum { diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 222d25beb8..c6a3a07189 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -40,7 +40,7 @@ Local_key_engraver::do_creation_processing () } else { - key_C_ = &((Key_engraver*)result->engraver_l ())->key_; + key_C_ = &((Key_engraver*)result->access_Engraver ())->key_; local_key_ = *key_C_; } } diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc index bcda3dbc42..8a3928c4be 100644 --- a/lily/music-output-def.cc +++ b/lily/music-output-def.cc @@ -6,11 +6,12 @@ (c) 1997--1998 Han-Wen Nienhuys */ - +#include "scope.hh" #include "debug.hh" #include "music-output-def.hh" #include "global-translator.hh" #include "dictionary-iter.hh" +#include "identifier.hh" int Music_output_def::get_next_default_count () const @@ -22,28 +23,46 @@ IMPLEMENT_IS_TYPE_B(Music_output_def); Music_output_def::Music_output_def () { + scope_p_ = new Scope; + translator_p_dict_p_ = new Scope; } Music_output_def::~Music_output_def () { - for (Dictionary_iter i (translator_p_dict_); i.ok (); i++) - delete i.val (); + delete scope_p_; + delete translator_p_dict_p_; } Music_output_def::Music_output_def (Music_output_def const &s) { - outfile_str_ = s.outfile_str_; - for (Dictionary_iter i (s.translator_p_dict_); i.ok (); i++) - assign_translator (i.key (), i.val ()->clone ()); + scope_p_ = new Scope (*s.scope_p_); + translator_p_dict_p_ = new Scope (*s.translator_p_dict_p_); + + for (Dictionary_iter i (*translator_p_dict_p_); i.ok (); i++) + { + Translator * t = i.val ()->access_Translator (); + t-> output_def_l_ = this; + } +} + +void +Music_output_def::assign_translator (Translator*tp) +{ + String s =tp->type_str_; + if (translator_p_dict_p_->elem_b (s)) + delete translator_p_dict_p_->elem (s); + + (*translator_p_dict_p_)[s] = new Translator_identifier (tp, 0); + tp ->output_def_l_ = this; } Translator* Music_output_def::find_translator_l (String name) const { - if (translator_p_dict_.elt_b (name)) - return translator_p_dict_[name]; + if (translator_p_dict_p_->elem_b (name)) + return (*translator_p_dict_p_)[name]->access_Translator (); - if (global_translator_dict_p->elt_b (name)) + if (global_translator_dict_p->elem_b (name)) return (*global_translator_dict_p)[name]; return 0; @@ -57,33 +76,28 @@ Music_output_def::get_global_translator_p () if (!t) error (_("Can't find Score context")); t = t->clone (); - Global_translator *g = t->group_l ()->global_l (); + Global_translator *g = t->access_Translator_group ()->global_l (); t->add_processing (); return g; } - -void -Music_output_def::assign_translator (String s, Translator*t) -{ - t->type_str_ = s; - t->output_def_l_ = this; - - if (translator_p_dict_.elt_b (s)) - delete translator_p_dict_[s]; - translator_p_dict_[s] = t; -} - void Music_output_def::print () const { #ifndef NPRINT - for (Dictionary_iter i (translator_p_dict_); i.ok (); i++) - { - DOUT << i.key () << " = "; - i.val ()->print (); - } - DOUT << "output: " << outfile_str_; + translator_p_dict_p_->print (); + scope_p_->print( ); #endif } + +String +Music_output_def::get_default_output () const +{ + if (!scope_p_->elem_b ("output")) + return ""; + Identifier * id = (*scope_p_) ["output"]; + + String *p = id->access_String (); + return p ? *p : String (""); +} diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 4c60dc2332..c37ec26b09 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -52,6 +52,7 @@ static Keyword_ent the_key_tab[]={ {"property", PROPERTY}, {"pt", PT_T}, {"relative", RELATIVE}, + {"remove", REMOVE}, {"score", SCORE}, {"script", SCRIPT}, {"shape", SHAPE}, @@ -86,7 +87,7 @@ Identifier* My_lily_lexer::lookup_identifier (String s) { for (int i = scope_l_arr_.size (); i--; ) - if (scope_l_arr_[i]->elt_b (s)) + if (scope_l_arr_[i]->elem_b (s)) return (*scope_l_arr_[i])[s]; return 0; } @@ -165,7 +166,7 @@ My_lily_lexer::lookup_pitch (String s) bool My_lily_lexer::notename_b (String s) const { - return note_tab_p_->elt_b (s); + return note_tab_p_->elem_b (s); } void diff --git a/lily/p-score.cc b/lily/p-score.cc index 48f2e400ac..df037f7a7d 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -271,7 +271,8 @@ Tex_stream * Paper_score::open_output_stream () { // output - String base_outname = paper_l_->outfile_str_ ; + String base_outname=paper_l_->get_default_output (); + if (base_outname.empty_b ()) { base_outname = default_outname_base_global; diff --git a/lily/paper-def.cc b/lily/paper-def.cc index 3216e0cd1c..e6294c3740 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -26,9 +26,9 @@ Paper_def::Paper_def () { lookup_p_assoc_p_ = new Assoc; - scope_p_ = new Scope; } + Paper_def::~Paper_def () { for (Assoc_iter ai(*lookup_p_assoc_p_); ai.ok (); ai++) @@ -36,7 +36,6 @@ Paper_def::~Paper_def () delete ai.val (); } - delete scope_p_; delete lookup_p_assoc_p_; } @@ -51,13 +50,13 @@ Paper_def::Paper_def (Paper_def const&s) set_lookup (ai.key(), l); } - scope_p_ = new Scope (*s.scope_p_); + } Real Paper_def::get_var (String s) const { - if (!scope_p_->elt_b (s)) + if (!scope_p_->elem_b (s)) error (_f ("unknown paper variable: `%s\'", s)); Real * p = scope_p_->elem (s)->access_Real (false); if (!p) @@ -134,7 +133,7 @@ Paper_def::geometric_spacing (Moment d) const void Paper_def::set_lookup (int i, Lookup*l) { - if (lookup_p_assoc_p_->elt_b (i)) + if (lookup_p_assoc_p_->elem_b (i)) { delete lookup_p_assoc_p_->elem (i); } @@ -200,11 +199,6 @@ Paper_def::print () const ai.val ()->print (); } - for (Assoc_iter i (*scope_p_); i.ok (); i++) - { - DOUT << i.key () << "= "; - DOUT << i.val ()->str () << '\n'; - } DOUT << "}\n"; #endif } @@ -236,3 +230,5 @@ Paper_def::get_next_default_count () const return default_count_i_ ++; } + + diff --git a/lily/parser.yy b/lily/parser.yy index af2252a226..10e1b8df1a 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -44,8 +44,8 @@ #include "transposed-music.hh" // mmm -Mudela_version oldest_version ("1.0.3"); -Mudela_version version ("1.0.4"); +Mudela_version oldest_version ("1.0.6"); +Mudela_version version ("1.0.6"); // needed for bison.simple's malloc() and free() @@ -175,6 +175,7 @@ yylex (YYSTYPE *s, void * v_l) %token PROPERTY %token PT_T %token RELATIVE +%token REMOVE %token SCORE %token SCRIPT %token SHAPE @@ -245,7 +246,7 @@ yylex (YYSTYPE *s, void * v_l) %type Music relative_music Sequential_music Simultaneous_music %type property_def translator_change %type Music_list -%type paper_block paper_body +%type paper_block paper_def_body %type dim real %type real_mult_expression real_primary %type unit @@ -368,7 +369,8 @@ add_declaration: $4->set_spot (THIS->pop_spot ()); } ; - +simple_identifier_init: identifier_init + ; identifier_init: score_block { $$ = new Score_identifier ($1, SCORE_IDENTIFIER); @@ -402,11 +404,7 @@ identifier_init: | explicit_duration { $$ = new Duration_identifier ($1, DURATION_IDENTIFIER); } - | simple_identifier_init - ; - -simple_identifier_init: - real { + | real { $$ = new Real_identifier (new Real ($1), REAL_IDENTIFIER); } | string { @@ -432,6 +430,11 @@ translator_spec_body: } | TYPE STRING ';' { Translator* t = get_translator_l (*$2); + Translator_group * tg = t->access_Translator_group (); + + if (!tg) + THIS->parser_error (_("Need a translator group for a context")); + t = t->clone (); t->set_spot (THIS->here_input ()); $$ = t; @@ -453,12 +456,20 @@ translator_spec_body: delete $4; $$->set_property (*$2, str); } + | translator_spec_body STRING ';' { + $$->type_str_ = *$2; + delete $2; + } | translator_spec_body CONSISTS STRING ';' { - $$->group_l ()->consists_str_arr_.push (*$3); + $$->access_Translator_group ()-> set_element (*$3, true); delete $3; } | translator_spec_body ACCEPTS STRING ';' { - $$->group_l ()->accepts_str_arr_.push (*$3); + $$->access_Translator_group ()-> set_acceptor (*$3, true); + delete $3; + } + | translator_spec_body REMOVE STRING ';' { + $$->access_Translator_group ()-> set_element (*$3, false); delete $3; } ; @@ -528,7 +539,7 @@ intastint_list: PAPER */ paper_block: - PAPER '{' paper_body '}' { + PAPER '{' paper_def_body '}' { $$ = $3; THIS-> lexer_p_->scope_l_arr_.pop (); } @@ -539,7 +550,7 @@ optional_semicolon: | ';' ; -paper_body: +paper_def_body: /* empty */ { Paper_def *p = THIS->default_paper_p (); THIS-> lexer_p_-> scope_l_arr_.push (p->scope_p_); @@ -550,30 +561,21 @@ paper_body: THIS->lexer_p_->scope_l_arr_.push (p->scope_p_); $$ = p; } - | paper_body OUTPUT STRING ';' { - $$->outfile_str_ = *$3; - delete $3; - } - | paper_body int '=' symtables { // ugh, what a syntax + | paper_def_body int '=' symtables { // ugh, what a syntax $$->set_lookup ($2, $4); } - | paper_body STRING '=' simple_identifier_init optional_semicolon { - Identifier* id = $4; - id->init_b_ = THIS->init_parse_b_; - if (id->is_type_b (Translator_identifier::static_name ())) - { - $$->assign_translator (*$2, id->access_Translator ()); - delete id; - } - else - THIS->lexer_p_->set_identifier (*$2, id); + | paper_def_body STRING '=' simple_identifier_init ';' { + THIS->lexer_p_->set_identifier (*$2, $4); delete $2; } - | paper_body SHAPE '=' shape_array ';' { + | paper_def_body translator_spec { + $$-> assign_translator ($2); + } + | paper_def_body SHAPE '=' shape_array ';' { $$->shape_int_a_ = *$4; delete $4; } - | paper_body error { + | paper_def_body error { } ; @@ -637,13 +639,8 @@ midi_body: /* empty */ { | MIDI_IDENTIFIER { $$ = $1-> access_Midi_def (); } - | midi_body STRING '=' translator_spec { - $$-> assign_translator (*$2, $4); - delete $2; - } - | midi_body OUTPUT STRING ';' { - $$->outfile_str_ = *$3; - delete $3; + | midi_body translator_spec { + $$-> assign_translator ($2); } | midi_body tempo_request ';' { $$->set_tempo ($2->dur_.length (), $2->metronome_i_); diff --git a/lily/performance.cc b/lily/performance.cc index 4332a23486..7ae2ea35be 100644 --- a/lily/performance.cc +++ b/lily/performance.cc @@ -121,7 +121,7 @@ Performance::process() { print (); - String out=midi_l_->outfile_str_; + String out = midi_l_->get_default_output (); if (out.empty_b ()) { diff --git a/lily/performer.cc b/lily/performer.cc index aa24f97bd1..7fdbdc001a 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -30,6 +30,6 @@ Performer_group_performer* Performer::daddy_perf_l () const { return (daddy_trans_l_) - ?(Performer_group_performer*) daddy_trans_l_->performer_l () + ?(Performer_group_performer*) daddy_trans_l_->access_Performer () : 0; } diff --git a/lily/scope.cc b/lily/scope.cc index 2e20a1b38d..5918dc92fd 100644 --- a/lily/scope.cc +++ b/lily/scope.cc @@ -46,3 +46,5 @@ Scope::Scope (Scope const&s) Scope::Scope () {} + + diff --git a/lily/score-priority-engraver.cc b/lily/score-priority-engraver.cc index ea9ae79737..310e44e101 100644 --- a/lily/score-priority-engraver.cc +++ b/lily/score-priority-engraver.cc @@ -48,7 +48,7 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf) int priority =item_l->break_priority_i_; Horizontal_group_item * hg =0; - if (!align_p_assoc_.elt_b(priority)) + if (!align_p_assoc_.elem_b(priority)) { hg = new Horizontal_group_item; announce_element (Score_element_info (hg,0)); diff --git a/lily/scores.cc b/lily/scores.cc index 7f257671ac..257ead14c1 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -80,6 +80,8 @@ do_scores() } else { + if (!monitor->silent_b ("do_scores")) + is_p->print (); is_p->process(); } } diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index e2786de70d..ac2cfa3aab 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -88,7 +88,7 @@ Staff_performer::new_instrument_str () return instrument_str_; /* ugh, but can 't - if (properties_dict_.elt_b ("instrument")) + if (properties_dict_.elem_b ("instrument")) return properties_dict_["instrument"]; return ""; */ diff --git a/lily/symtable.cc b/lily/symtable.cc index 5814d5294a..a31477b551 100644 --- a/lily/symtable.cc +++ b/lily/symtable.cc @@ -40,7 +40,7 @@ Symtables::~Symtables() Atom Symtable::lookup (String s) const { - if (elt_b (s)) + if (elem_b (s)) { Atom a (elem(s)); return a; @@ -56,7 +56,7 @@ Symtable::lookup (String s) const Symtable* Symtables::operator()(String s) { - if (!elt_b (s)) + if (!elem_b (s)) { error (_f ("Symtable `%s\' unknown", s)); /* diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index b72d784608..1e52ea151e 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -30,7 +30,7 @@ Time_signature_engraver::do_process_requests() return ; } - Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l (); + Timing_engraver * timing_grav_l= (Timing_engraver*) result->access_Engraver (); Time_signature_change_req *req = timing_grav_l->time_signature_req_l(); if (req) diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc index 1541b32722..86de427224 100644 --- a/lily/translator-ctors.cc +++ b/lily/translator-ctors.cc @@ -30,7 +30,7 @@ add_translator (Translator *t) Translator* get_translator_l (String s) { - if (global_translator_dict_p->elt_b (s)) + if (global_translator_dict_p->elem_b (s)) { // return (*global_translator_dict_p)[s]; Translator* t = (*global_translator_dict_p)[s]; diff --git a/lily/translator-group.cc b/lily/translator-group.cc index f1da4dbdf9..3d5a6ff2d0 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -50,7 +50,7 @@ Translator_group::check_removal() IMPLEMENT_IS_TYPE_B1(Translator_group, Translator); void -Translator_group::add (Translator *trans_p) +Translator_group::add_translator (Translator *trans_p) { trans_p_list_.bottom().add (trans_p); trans_p->daddy_trans_l_ = this; @@ -58,6 +58,31 @@ Translator_group::add (Translator *trans_p) trans_p->add_processing (); } +void +Translator_group::set_acceptor (String accepts, bool add) +{ + if (add) + accepts_str_arr_.push (accepts); + else + for (int i=accepts_str_arr_.size (); i--; ) + if (accepts_str_arr_[i] == accepts) + accepts_str_arr_.del (i); +} + +void +Translator_group::set_element (String s, bool add) +{ + if (!get_translator_l (s)) + error ("Program has no such type"); + + if (add) + consists_str_arr_.push (s); + else + for (int i=consists_str_arr_.size (); i--; ) + if (consists_str_arr_[i] == s) + consists_str_arr_.del (i); +} + bool Translator_group::removable_b() const { @@ -85,9 +110,9 @@ Translator_group::path_to_acceptable_translator (String type) const for (int i=0; i < accepts_str_arr_.size (); i++) { Translator *t = output_def_l ()->find_translator_l (accepts_str_arr_[i]); - if (!t || !t->group_l ()) + if (!t || !t->access_Translator_group ()) continue; - accepted_arr.push (t->group_l()); + accepted_arr.push (t->access_Translator_group ()); } @@ -133,8 +158,8 @@ Translator_group::find_create_translator_l (String n, String id) // start at 1. The first one (index 0) will be us. for (int i=0; i < path.size (); i++) { - Translator_group * new_group = path[i]->clone ()->group_l (); - current->add (new_group); + Translator_group * new_group = path[i]->clone ()->access_Translator_group (); + current->add_translator (new_group); current = new_group; } current->id_str_ = id; @@ -185,8 +210,8 @@ Translator_group::group_l_arr () const Link_array groups; for (PCursor i (trans_p_list_.top ()); i.ok (); i++) { - if (i->group_l ()) - groups.push (i->group_l ()); + if (i->access_Translator_group ()) + groups.push (i->access_Translator_group ()); } return groups; } @@ -197,7 +222,7 @@ Translator_group::nongroup_l_arr () const Link_array groups; for (PCursor i (trans_p_list_.top ()); i.ok (); i++) { - if (!i->group_l ()) + if (!i->access_Translator_group ()) groups.push (i.ptr ()); } return groups; @@ -263,8 +288,8 @@ Translator_group::get_default_interpreter() warning (_f ("can't find or create `%s\'", accepts_str_arr_[0])); t = this; } - Translator_group * g= t->clone ()->group_l (); - add (g); + Translator_group * g= t->clone ()->access_Translator_group (); + add_translator (g); if (!g->is_bottom_translator_b ()) return g->get_default_interpreter (); @@ -352,6 +377,6 @@ Translator_group::do_add_processing () if (!t) warning (_f ("can't find `%s\'", consists_str_arr_[i])); else - add (t->clone ()); + add_translator (t->clone ()); } } diff --git a/lily/translator.cc b/lily/translator.cc index 3f00ff928f..e8223784ea 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -157,7 +157,7 @@ Translator::pre_move_processing () Scalar Translator::get_property (String id) { - if (properties_dict_.elt_b (id)) + if (properties_dict_.elem_b (id)) { return properties_dict_[id]; } diff --git a/make/STATE-VECTOR b/make/STATE-VECTOR index 459dacb43a..77fa91d8eb 100644 --- a/make/STATE-VECTOR +++ b/make/STATE-VECTOR @@ -90,3 +90,5 @@ 1.0.11.mb1 1.0.11.uu1 1.0.12 +1.0.12.am1 +1.0.12.hwn1 diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly index f3e31235d1..43bf8760e8 100644 --- a/mutopia/Coriolan/bassi-part.ly +++ b/mutopia/Coriolan/bassi-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "violoncello.ly" diff --git a/mutopia/Coriolan/clarinetti-part.ly b/mutopia/Coriolan/clarinetti-part.ly index 0f3c74edf5..363c427b71 100644 --- a/mutopia/Coriolan/clarinetti-part.ly +++ b/mutopia/Coriolan/clarinetti-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "clarinetti.ly" diff --git a/mutopia/Coriolan/clarinetti.ly b/mutopia/Coriolan/clarinetti.ly index 7156bbdcb2..0ae6fe1498 100644 --- a/mutopia/Coriolan/clarinetti.ly +++ b/mutopia/Coriolan/clarinetti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "clarinetto-1.ly" \include "clarinetto-2.ly" diff --git a/mutopia/Coriolan/clarinetto-1.ly b/mutopia/Coriolan/clarinetto-1.ly index f7d4d6c0b6..41185ad508 100644 --- a/mutopia/Coriolan/clarinetto-1.ly +++ b/mutopia/Coriolan/clarinetto-1.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; clarinetto1 = \notes \relative c { R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/clarinetto-2.ly b/mutopia/Coriolan/clarinetto-2.ly index 87ae15613c..f20ffa8357 100644 --- a/mutopia/Coriolan/clarinetto-2.ly +++ b/mutopia/Coriolan/clarinetto-2.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; clarinetto2 = \notes \relative c { R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/contrabasso-part.ly b/mutopia/Coriolan/contrabasso-part.ly index 30697b2c73..722dca5083 100644 --- a/mutopia/Coriolan/contrabasso-part.ly +++ b/mutopia/Coriolan/contrabasso-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "contrabasso.ly" diff --git a/mutopia/Coriolan/contrabasso.ly b/mutopia/Coriolan/contrabasso.ly index d022c82b5d..3ddaa8d3d8 100644 --- a/mutopia/Coriolan/contrabasso.ly +++ b/mutopia/Coriolan/contrabasso.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; contrabasso = \notes \relative c { % \translator Staff=violoncello diff --git a/mutopia/Coriolan/coriolan.ly b/mutopia/Coriolan/coriolan.ly index ac6f000eb4..33d155f495 100644 --- a/mutopia/Coriolan/coriolan.ly +++ b/mutopia/Coriolan/coriolan.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" diff --git a/mutopia/Coriolan/corni-part.ly b/mutopia/Coriolan/corni-part.ly index e914ce3c8d..0486c83125 100644 --- a/mutopia/Coriolan/corni-part.ly +++ b/mutopia/Coriolan/corni-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "corni.ly" diff --git a/mutopia/Coriolan/corni.ly b/mutopia/Coriolan/corni.ly index 09293eb75d..4f3e219ee1 100644 --- a/mutopia/Coriolan/corni.ly +++ b/mutopia/Coriolan/corni.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "corno-1.ly" \include "corno-2.ly" diff --git a/mutopia/Coriolan/corno-1.ly b/mutopia/Coriolan/corno-1.ly index 8b7232ed21..ea05e79c15 100644 --- a/mutopia/Coriolan/corno-1.ly +++ b/mutopia/Coriolan/corno-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; corno1 = \notes \relative c { R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/corno-2.ly b/mutopia/Coriolan/corno-2.ly index 80746b3df6..d36a5c53fd 100644 --- a/mutopia/Coriolan/corno-2.ly +++ b/mutopia/Coriolan/corno-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; corno2 = \notes \relative c { R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/fagotti-part.ly b/mutopia/Coriolan/fagotti-part.ly index f485eb00e2..59ca4c916e 100644 --- a/mutopia/Coriolan/fagotti-part.ly +++ b/mutopia/Coriolan/fagotti-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "fagotti.ly" diff --git a/mutopia/Coriolan/fagotti.ly b/mutopia/Coriolan/fagotti.ly index b0cf8a0bb7..4b6192f166 100644 --- a/mutopia/Coriolan/fagotti.ly +++ b/mutopia/Coriolan/fagotti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "fagotto-1.ly" \include "fagotto-2.ly" diff --git a/mutopia/Coriolan/fagotto-1.ly b/mutopia/Coriolan/fagotto-1.ly index f9cdfb573e..ed3b836ac9 100644 --- a/mutopia/Coriolan/fagotto-1.ly +++ b/mutopia/Coriolan/fagotto-1.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; fagotto1 = \notes \relative c { R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/fagotto-2.ly b/mutopia/Coriolan/fagotto-2.ly index ed15d8b76c..d5cd40569c 100644 --- a/mutopia/Coriolan/fagotto-2.ly +++ b/mutopia/Coriolan/fagotto-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; fagotto2 = \notes \relative c { R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/flauti-part.ly b/mutopia/Coriolan/flauti-part.ly index 9afed158c9..7c497e009e 100644 --- a/mutopia/Coriolan/flauti-part.ly +++ b/mutopia/Coriolan/flauti-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "flauti.ly" diff --git a/mutopia/Coriolan/flauti.ly b/mutopia/Coriolan/flauti.ly index 7217b6f831..5fcc5d2003 100644 --- a/mutopia/Coriolan/flauti.ly +++ b/mutopia/Coriolan/flauti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "flauto-1.ly" \include "flauto-2.ly" diff --git a/mutopia/Coriolan/flauto-1.ly b/mutopia/Coriolan/flauto-1.ly index 8841c9ca95..d4c8094618 100644 --- a/mutopia/Coriolan/flauto-1.ly +++ b/mutopia/Coriolan/flauto-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; flauto1 = \notes \relative c { R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/flauto-2.ly b/mutopia/Coriolan/flauto-2.ly index 724e9e4174..677e10111b 100644 --- a/mutopia/Coriolan/flauto-2.ly +++ b/mutopia/Coriolan/flauto-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; flauto2 = \notes \relative c { R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/global.ly b/mutopia/Coriolan/global.ly index 50fa87f4c8..c7006517e2 100644 --- a/mutopia/Coriolan/global.ly +++ b/mutopia/Coriolan/global.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; global = \notes { \time 4/4; diff --git a/mutopia/Coriolan/oboe-1.ly b/mutopia/Coriolan/oboe-1.ly index 670f10fc2b..fadc4eb74e 100644 --- a/mutopia/Coriolan/oboe-1.ly +++ b/mutopia/Coriolan/oboe-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; oboe1 = \notes \relative c'' { R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/oboe-2.ly b/mutopia/Coriolan/oboe-2.ly index afcf542610..96d36c05ac 100644 --- a/mutopia/Coriolan/oboe-2.ly +++ b/mutopia/Coriolan/oboe-2.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; oboe2 = \notes \relative c{ R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/oboi-part.ly b/mutopia/Coriolan/oboi-part.ly index 0209b433cb..6869ab8e73 100644 --- a/mutopia/Coriolan/oboi-part.ly +++ b/mutopia/Coriolan/oboi-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "oboi.ly" diff --git a/mutopia/Coriolan/oboi.ly b/mutopia/Coriolan/oboi.ly index 543805266b..2f16346d2c 100644 --- a/mutopia/Coriolan/oboi.ly +++ b/mutopia/Coriolan/oboi.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "oboe-1.ly" \include "oboe-2.ly" diff --git a/mutopia/Coriolan/timpani.ly b/mutopia/Coriolan/timpani.ly index 5447bd60a6..bb83ba75f5 100644 --- a/mutopia/Coriolan/timpani.ly +++ b/mutopia/Coriolan/timpani.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; timpani = \notes \relative c { R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/trombe-part.ly b/mutopia/Coriolan/trombe-part.ly index 1e69e439c4..0452afad65 100644 --- a/mutopia/Coriolan/trombe-part.ly +++ b/mutopia/Coriolan/trombe-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "trombe.ly" diff --git a/mutopia/Coriolan/trombe.ly b/mutopia/Coriolan/trombe.ly index 593801191c..e7c58a6334 100644 --- a/mutopia/Coriolan/trombe.ly +++ b/mutopia/Coriolan/trombe.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "trombo-1.ly" \include "trombo-2.ly" diff --git a/mutopia/Coriolan/trombo-1.ly b/mutopia/Coriolan/trombo-1.ly index 65b362e2c5..2b2314cf58 100644 --- a/mutopia/Coriolan/trombo-1.ly +++ b/mutopia/Coriolan/trombo-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; trombo1 = \notes \relative c { R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/trombo-2.ly b/mutopia/Coriolan/trombo-2.ly index cf1e654933..41b15f1b45 100644 --- a/mutopia/Coriolan/trombo-2.ly +++ b/mutopia/Coriolan/trombo-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; trombo2 = \notes \relative c { R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly index 3d69be4a38..155c40b1f6 100644 --- a/mutopia/Coriolan/viola-1.ly +++ b/mutopia/Coriolan/viola-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; viola1 = \notes \relative c { \type Voice=one diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly index d309d0d766..5623a5459e 100644 --- a/mutopia/Coriolan/viola-2.ly +++ b/mutopia/Coriolan/viola-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; viola2 = \notes \relative c { % starts on (actualy, most part is on) same staff as viola1 diff --git a/mutopia/Coriolan/viola-part.ly b/mutopia/Coriolan/viola-part.ly index f6ff5bf220..37de6ee6d3 100644 --- a/mutopia/Coriolan/viola-part.ly +++ b/mutopia/Coriolan/viola-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "viola-1.ly" diff --git a/mutopia/Coriolan/violino-1-part.ly b/mutopia/Coriolan/violino-1-part.ly index af23c50350..a367ac3173 100644 --- a/mutopia/Coriolan/violino-1-part.ly +++ b/mutopia/Coriolan/violino-1-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "violino-1.ly" diff --git a/mutopia/Coriolan/violino-1.ly b/mutopia/Coriolan/violino-1.ly index 0b32f8cedc..2ce139fdd6 100644 --- a/mutopia/Coriolan/violino-1.ly +++ b/mutopia/Coriolan/violino-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; violino1 = \notes \relative c { c'1\ff ~ | c | r r2 | R1 | diff --git a/mutopia/Coriolan/violino-2-part.ly b/mutopia/Coriolan/violino-2-part.ly index 6fe721a4a7..0e7231b183 100644 --- a/mutopia/Coriolan/violino-2-part.ly +++ b/mutopia/Coriolan/violino-2-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "violino-2.ly" diff --git a/mutopia/Coriolan/violino-2.ly b/mutopia/Coriolan/violino-2.ly index 4a4b04496d..50c2a19b20 100644 --- a/mutopia/Coriolan/violino-2.ly +++ b/mutopia/Coriolan/violino-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; violino2 = \notes \relative c { c'1\ff ~ | c | r r2 | R1 | diff --git a/mutopia/Coriolan/violoncello-part.ly b/mutopia/Coriolan/violoncello-part.ly index 30720db5ba..6c0dffe102 100644 --- a/mutopia/Coriolan/violoncello-part.ly +++ b/mutopia/Coriolan/violoncello-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "global.ly" \include "violoncello.ly" diff --git a/mutopia/Coriolan/violoncello.ly b/mutopia/Coriolan/violoncello.ly index e8d117e4fa..849f2731ab 100644 --- a/mutopia/Coriolan/violoncello.ly +++ b/mutopia/Coriolan/violoncello.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; violoncello = \notes \relative c { c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 | diff --git a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly index d55183d9a2..53347bab50 100644 --- a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly +++ b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly @@ -4,7 +4,7 @@ piece = "Allemande"; } -\version "1.0.4"; +\version "1.0.6"; global = \notes{ \time 4/4; diff --git a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly index c6527f5447..5a8991e351 100644 --- a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly +++ b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly @@ -10,7 +10,7 @@ copyright = "Public Domain"; } -\version "1.0.4"; +\version "1.0.6"; global = \notes { \time 4/4; diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly index 2897e9c0dc..02851b9948 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly @@ -14,7 +14,7 @@ enteredby = "jcn"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c { \property Voice . textstyle = "italic" diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly index 17a74c61da..46d3d13794 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly @@ -14,7 +14,7 @@ enteredby = "jcn"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c{ \property Voice . textstyle = "italic" r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] | diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly index 8fc766402b..2373753f99 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly @@ -12,7 +12,7 @@ composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "jcn"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c{ \property Voice . textstyle = "italic" diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly index 142f047f45..6148cc1ef1 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly @@ -12,7 +12,7 @@ composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "jcn"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c{ diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly index 4455273075..b67f899415 100644 --- a/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly +++ b/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly @@ -12,7 +12,7 @@ composer = "Johann Sebastian Bach (1685-1750)"; enteredby = "jcn"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; one = \notes\relative c{ diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly index 2a182ad2be..9bc938b830 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "allemande-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly index a8536451d5..53fefe98c3 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "allemande-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly index 35c1cbdd51..bef3deb015 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "courante-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly index e3b92a148d..6e8734fe3d 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "courante-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly index 1dadeae3b6..1281558bbf 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "gigue-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly index cc075b3f72..bbc8852eef 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "gigue-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly index 33a843066c..cc9662b8a1 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly @@ -16,7 +16,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "menuetto-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly index afc1078efb..475d9a94da 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-viola.ly @@ -17,7 +17,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "menuetto-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly index 9043a9cace..1905bfcea6 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "prelude-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly index 40f3288678..98442c31fd 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "prelude-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly index 9e16f386d8..0900f4c630 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "sarabande-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly index 1c7bf7ccf7..24086de8d1 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.4"; +\version "1.0.6"; \include "sarabande-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly index d9722237bc..baa5c359e0 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly @@ -2,6 +2,9 @@ linewidth= 180.\mm; gourlay_maxmeasures = 10.0; % for simple testing only! -% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn - \include "bar-numbering.ly"; + + + \translator { + \BarNumberingStaffContext + } } diff --git a/mutopia/J.S.Bach/wtk1-fugue1.ly b/mutopia/J.S.Bach/wtk1-fugue1.ly index e00ea800d3..ff2d679a61 100644 --- a/mutopia/J.S.Bach/wtk1-fugue1.ly +++ b/mutopia/J.S.Bach/wtk1-fugue1.ly @@ -11,7 +11,7 @@ copyright = "Public Domain"; %{ %} -\version "1.0.4"; +\version "1.0.6"; global = diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly index 8c36ac007b..867c968e51 100644 --- a/mutopia/J.S.Bach/wtk1-fugue2.ly +++ b/mutopia/J.S.Bach/wtk1-fugue2.ly @@ -13,7 +13,7 @@ Tested Features: stem direction, multivoice, forced accidentals. %} -\version "1.0.4"; +\version "1.0.6"; \include "nederlands.ly" % for correct parsing of note names diff --git a/mutopia/J.S.Bach/wtk1-prelude1.ly b/mutopia/J.S.Bach/wtk1-prelude1.ly index 1ae74ec4aa..aa78870d20 100644 --- a/mutopia/J.S.Bach/wtk1-prelude1.ly +++ b/mutopia/J.S.Bach/wtk1-prelude1.ly @@ -8,7 +8,7 @@ enteredby = "Shay Rojansky"; copyright = "Public Domain"; } -\version "1.0.4"; +\version "1.0.6"; global = \notes { diff --git a/mutopia/W.A.Mozart/cadenza.ly b/mutopia/W.A.Mozart/cadenza.ly index a192b1afd9..e79a373423 100644 --- a/mutopia/W.A.Mozart/cadenza.ly +++ b/mutopia/W.A.Mozart/cadenza.ly @@ -13,7 +13,7 @@ Tested Features: cadenza mode Ugh.. Wish we had grace notes.... It adds another dimension to this piece of music. %} -\version "1.0.4"; +\version "1.0.6"; cad = \notes \relative c' { diff --git a/mutopia/W.A.Mozart/horn-concerto-3.ly b/mutopia/W.A.Mozart/horn-concerto-3.ly index 730f69b5ac..fe70940406 100644 --- a/mutopia/W.A.Mozart/horn-concerto-3.ly +++ b/mutopia/W.A.Mozart/horn-concerto-3.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; allegro = \notes diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly index 978b8bcc89..a14be9e911 100644 --- a/mutopia/gallina.ly +++ b/mutopia/gallina.ly @@ -45,7 +45,7 @@ Voice engraver by uncommenting the lines in the paper definition below. --MB %} -\version "1.0.4"; +\version "1.0.6"; vi1=\notes \relative c'' { \time 4/4; @@ -234,24 +234,14 @@ bc=\notes\transpose c'{ \paper{ gourlay_maxmeasures=7.; -%{ + \translator { \VoiceContext + %% Uncomment to get the original layout without beams. %%%% Compare to the definition in init/engraver.ly. - Voice = \translator { - \type "Engraver_group_engraver"; - \consists "Dynamic_engraver"; - \consists "Rest_engraver"; - \consists "Stem_engraver"; - \consists "Plet_engraver"; - % \consists "Beam_engraver"; - \consists "Beam_req_swallow_translator"; - \consists "Abbreviation_beam_engraver"; - \consists "Script_engraver"; - \consists "Rhythmic_column_engraver"; - \consists "Slur_engraver"; - \accepts "Thread"; - } -%} + +% \remove "Beam_engraver"; + + } } \midi{ diff --git a/mutopia/los-toros-oboe.ly b/mutopia/los-toros-oboe.ly index d3c21e22a9..b8c08e12c1 100644 --- a/mutopia/los-toros-oboe.ly +++ b/mutopia/los-toros-oboe.ly @@ -8,7 +8,7 @@ enteredby = "jcn"; copyright = "public domain"; latexheaders= "headers"; } -\version "1.0.4"; +\version "1.0.6"; %{ Silly latex file dropped; use ly2dvi diff --git a/mutopia/standchen-16.ly b/mutopia/standchen-16.ly index 77b00acb9f..495414b803 100644 --- a/mutopia/standchen-16.ly +++ b/mutopia/standchen-16.ly @@ -9,6 +9,6 @@ description = "A schubert song in 16 pt"; copyright = "public domain"; } -\version "1.0.4"; +\version "1.0.6"; \include "standchen.ly" diff --git a/mutopia/standchen-20.ly b/mutopia/standchen-20.ly index 15d0d84dc7..3c41e60ddd 100644 --- a/mutopia/standchen-20.ly +++ b/mutopia/standchen-20.ly @@ -9,7 +9,7 @@ copyright = "public domain"; description = "A schubert song in 20 pt"; } -\version "1.0.4"; +\version "1.0.6"; % fool make-website % \include "standchen.ly"; diff --git a/mutopia/standchen.ly b/mutopia/standchen.ly index 90997fbbe2..7c3589bcf2 100644 --- a/mutopia/standchen.ly +++ b/mutopia/standchen.ly @@ -16,7 +16,7 @@ multiple \paper{}s in one \score Note: Original key F. %} -\version "1.0.4"; +\version "1.0.6"; $vocal_verse1 = \notes\relative c{ % ugh: treble/bass diff --git a/scripts/convert-mudela.py b/scripts/convert-mudela.py index 81cd1795d3..6481c5b77b 100644 --- a/scripts/convert-mudela.py +++ b/scripts/convert-mudela.py @@ -200,7 +200,31 @@ if 1: conversions.append ((1,0,4), conv, 'default_{paper,midi}\n') +if 1: + def conv(lines): + newlines =[] + for x in lines: + x = regsub.gsub ('ChoireStaff', 'ChoirStaff',x) + x = regsub.gsub ('\\output', 'output = ',x) + newlines.append (x) + return newlines + + conversions.append ((1,0,5), conv, 'ChoireStaff -> ChoirStaff\n') +if 1: + def conv(lines): + newlines =[] + found = 0 + for x in lines: + found = regex.search ('[a-zA-Z]+ = *\\translator',x) <> -1 + newlines.append (x) + if found: break + if found: + sys.stderr.write ('\nNot smart enough to \\translator syntax\n') + raise FatalConversionError() + return newlines + + conversions.append ((1,0,6), conv, 'foo = \\translator {\type .. } ->\translator {\type ..; foo; }\n') ############################ def get_conversions (from_version, to_version): diff --git a/stepmake/NEWS b/stepmake/NEWS index 2dbb0532e2..fcf8a7380d 100644 --- a/stepmake/NEWS +++ b/stepmake/NEWS @@ -1,3 +1,5 @@ +pl 54 + - && for TeX pl 53 - moved TeX stuff into tex template pl 52 diff --git a/stepmake/VERSION b/stepmake/VERSION index 58e4ed00c0..70ca4128d7 100644 --- a/stepmake/VERSION +++ b/stepmake/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=StepMake MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=53 +PATCH_LEVEL=54 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/stepmake/stepmake/tex-rules.make b/stepmake/stepmake/tex-rules.make index 96f2bd0ae8..ccbb7c3ab1 100644 --- a/stepmake/stepmake/tex-rules.make +++ b/stepmake/stepmake/tex-rules.make @@ -4,11 +4,11 @@ $(outdir)/%.dvi: $(outdir)/%.tex (cd $(outdir); tex \\nonstopmode \\input $(