diff options
author | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1998-10-14 15:44:20 +0200 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@xs4all.nl> | 1998-10-14 15:44:20 +0200 |
commit | ae9dfbb452eff2e47f1330854a12d73161fcb677 (patch) | |
tree | 98955dafdce4e5b13e03bff1943b8fd1a079acb6 | |
parent | 5bfcde359e5e76a9cfb0ab357ed34a308eedba84 (diff) |
release: 1.0.16
63 files changed, 817 insertions, 578 deletions
diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo index 96983f7f35..ae08ad2d24 100644 --- a/Documentation/tex/refman.yo +++ b/Documentation/tex/refman.yo @@ -6,6 +6,17 @@ redef(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(})) redef(code)(1)(tt(ARG1)) +COMMENT( + +TODO: + the use of semicolons needs to be documented once it settles down + \times needs documentation with examples somewhere once it works (?) + paper size? + the explanation of how lyrics mode parses words seems ridiculous. + Is there a simple way to explain this, or is the behavior + too complicated for a reasonable explanation? +) + COMMENT( This document contains Mudela fragments. You need at least Yodl-1.30.18 to convert this to tex or html. @@ -27,11 +38,10 @@ latexlayoutcmds( \input mudela-book ) -COMMENT(whenlatex(notableofcontents())) whentexinfo(notableofcontents()) -article(Mudela Reference Manual) - (Adrian Moriano, Han-Wen Nienhuys and Jan Nieuwenhuizen) +article(Mudela 1.0.7 / LilyPond 1.0.15 Reference Manual) + (Adrian Mariano, Han-Wen Nienhuys and Jan Nieuwenhuizen) (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop()) COMMENT( @@ -109,8 +119,8 @@ sect(Syntax) subsect(Basic Mudela) A Mudela file consists of keywords with arguments and identifier -assignments separated by spaces, tabs or newlines. (Semicolons are -used by some keywords but are not generally required.) A one line +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. @@ -203,16 +213,16 @@ 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) +verb(absdynamic header musicalpitch remove times +accepts in name score translator +bar include notenames script transpose +cadenza key notes shape type +clef keysignature paper skip version +cm lyrics partial spandynamic +consists maininput penalty symboltables +duration mark property table +font midi pt tempo +grouping mm relative time) The right hand side of an identifier assignment is parsed completely when the assignment is made. It therefore must have any context @@ -220,24 +230,29 @@ 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 } +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. +an error will result. Note however that the following is acceptible +verb(foo = \notes { ... } +\score{ \foo }) +It is not necessary to specify code(\notes). Identifiers can be set equal to integers, reals, strings, music, durations (specified with code(\duration)), note ornaments (specified -with code(\script), dynamics commands, or code(:)), 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. - +with code(\script), dynamics commands, or code(:)), note name tables +(specified with code(\notenames), translator definitions, the +code(\paper) block, the code(\midi) block or the code(\score) block. +When identifiers are used for translators, the code(\paper), +code(\midi), and code(\score) blocks, they may only be referred to as +the first item in a block. So code(\paper{\one \two}) is illegal +because the identifier code(\two) is not the first thing in the block. +Unlike other identifier definitions, translator identifier definitions +can only appear within code(\midi) or code(\paper) blocks. See +Section ref(translators) for more information. COMMENT( @@ -310,7 +325,7 @@ Quoted words can also be used in lyrics mode to specify words that cannot be specified with the above rules. Here are some examples. Not all of these words are printable by TeX(). verb(a&@&@&TSI|{[ % a word -\'afoo} % a word +\'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 @@ -519,8 +534,8 @@ mudela()( open flageolet reverseturn trill prall mordent prallprall prallmordent uprall downprall }> - \paper{linewidth = 5.875\in - indent = 0.0 + \paper{linewidth = 5.875\in; + indent = 0.0; } } ) @@ -556,7 +571,9 @@ 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). +terminated with code(\rced). There are also shorthands for these +marks. A crescendo can be started with code(\<) and a decrescendo can +be started with code(\>). Either one can be terminated with code(\!). 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 @@ -881,7 +898,7 @@ mudela(center)( \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 } + \paper{ linewidth= 4.5 \in; } } ) mudela(center)( @@ -891,7 +908,7 @@ mudela(center)( \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 } + \paper{ linewidth= 4.5 \in; } } ) The treble clef can also be obtained using the names code(G) or @@ -900,8 +917,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 keyword can appear only within a -code(\translator) block. It specifies that an engraver named -var(string) should be added to the translator. See Section ref(translators). +code(\translator) block. It specifies that an engraver or performer named +var(string) should be added to the translator. See Section +ref(translators). dit(code(\duration) code({) var(length) var(dotcount) code(})) Specify note duration. The parameter var(length) is the negative logarithm (base @@ -912,7 +930,7 @@ var(dotcount). 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 +dit(code(\grouping) var(durationseq)code(;)) Sets the metric structure of the measure. Each argument specifies the duration of one metric unit. For example, code(\duration 16*5;) specifies a grouping of five beats together in 5/16 time. The default grouping is to have as many groups @@ -930,12 +948,13 @@ 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. +file(.ly) extension must be given, and the filename must be quoted. +(An unquoted string will not work here.) -dit(code(\key) var(pitch)) Change key signature to that of +dit(code(\key) var(pitch)code(;)) Change key signature to that of var(pitch)-major. -dit(code(\keysignature) var(pitchseq);) +dit(code(\keysignature) var(pitchseq)code(;)) Specify an arbitrary key signature. The pitches from var(pitch) will be printed in the key signature in the order that they appear on the list. @@ -945,13 +964,15 @@ 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. 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(\mark) var(unsigned)code(;) or code(\mark) var(string)code(;)) +Allowed in 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). +indicate that musical output should be produced and to set output +parameters. Can also appear at the top level to set default output +parameters. See code(\tempo). dit(code(\mm)) Specify a dimension in millimeters. @@ -962,7 +983,12 @@ 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(\notenames) var(assignmentlist)) Define new note names. +dit(code(\name) var(context)code(;)) Appears within code(\translator) to +specify the name of the context that the translator handles. See Section +ref(translators). + +dit(code(\notenames) var(assignmentlist)) Define new note names. This +keyword can appear only at the top level. The argument is a list of definitions of the form var(name) = var(pitch), where var(pitch) is specified with the code(\musicalpitch) keyword. @@ -970,26 +996,27 @@ code(\musicalpitch) keyword. dit(code(\notes) var(music)) Enter note mode and process the specified music. -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(\)code(output) var(string)code(;)) Generate a parse error. dit(code(\paper) var(statmentlist)) -Appears in a score block to indicate that the music should be printed. +Appears in a score block to indicate that the music should be printed +or to set output parameters. Can also appear at the top level to set +default output parameters for all of the score blocks. The var(statmentlist) contains statements that change features of the output. See Section ref(paper). -dit(code(\partial) var(duration)) Specify that the first measure of +dit(code(\partial) var(duration)code(;)) Specify that the first measure of the music lasts only for the specified duration. -dit(code(\penalty) code(=) var(int)) Allowed only in music. +dit(code(\penalty) code(=) var(int)code(;)) Allowed only in music. Discourage or encourage line breaks. See identifiers code(\break) and code(\nobreak) in Section ref(ident). dit(code(\property) var(contextname)code(.)var(propname) code(=) var(value)) Sets the var(propname) property of the context var(contextname) to the -specified var(value). All three arguments are strings. +specified var(value). All three arguments are strings. Depending on +the context it may be necessary to quote the strings or to leave space +on both sides of the dot. dit(code(\pt)) Specify a dimension in points. @@ -1002,6 +1029,10 @@ the starting pitch for this comparision. In the case of chords, the first note of a chord is used as the base for the first pitches in the next chord. See Section ref(relative). +dit(code(\remove) var(string)code(;)) Can appear only in a +code(\translator) block. Specifies that a performer or engraver named +var(string) should be removed. See Section ref(translators). + dit(code(\score) var(statementlist)) Create a Score context. This is the top level notation context. COMMENT(this still needs work) @@ -1033,7 +1064,7 @@ lines beyond those explicitly specified. COMMENT(First pair of dimensions seems to be skipped. At least it is in the example file denneboom.ly.) -dit(code(\skip) var(duration)) Skips the amount of time specified by +dit(code(\skip) var(duration)code(;)) Skips the amount of time specified by var(duration). A gap will be left for the skipped time with no notes printed. It works in Note Mode or Lyrics Mode (but generates a mysterious error in lyrics). @@ -1052,15 +1083,18 @@ file(table*.ly). dit(code(\table)) Internal keyword. Used within code(\symboltables) to specify the tables. See initialization files. -dit(code(\tempo) var(duration) = var(perminute)) 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(\tempo) var(duration) = var(perminute)code(;)) Used within +code(\midi) or within music to specify the tempo. For example, +`code(\midi { \tempo 4 = 76;})' requests output with 76 quarter notes +per minute. Note that if the music contains several tempo commands, +only the last one is used to set the tempo for the entire MIDI output. +COMMENT(Is this true?) +dit(code(\time) var(numerator)code(/)var(denominator)code(;)) Change the time +signature. The default time signature is 4/4. -dit(code(\time) var(numerator)code(/)var(denominator)) Change the time -signature. The default time signature is 4/4. - +dit(code(\times) var(numerator)code(/)var(denominator) var(music)) +Multiply the duration of var(music) by the specified fraction. dit(code(\translator) var(statements) or code(\translator) var(context) = var(name)) The first variant appears only within @@ -1173,17 +1207,16 @@ subsubsubsect(Lyrics properties) description( 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 \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 +choices are code(roman), code(italic), code(bold), code(large), +code(Large), code(typewriter), and code(finger). The code(finger) +font can only display numbers. Note also that you must be careful +when using code(\property) in Lyrics mode. Because of the way strings +are parsed, either put quotes around the arguments to code(\property) +or be sure to leave a space on both sides of the dot. + +dit(code(textalignment)) Controls alignment of lyrics. Set to code(\left) +to align the left end of the lyric with the note; set to code(\right) to +align the right end of the lyric with the note. Set to code(\center) to align the center of the lyric with the note. ) @@ -1192,7 +1225,12 @@ subsubsubsect(Voice properties) description( -dit(code(midi_instrument)) Sets the instrument for MIDI output. +dit(code("midi_instrument")) Sets the instrument for MIDI output. This +property name must be quoted because of the embedded underscore. If +this property is not set then LilyPond will use the code(instrument) +property. This must be set to one of the strings on the list of MIDI +instruments that appears in Section ref(midilist). If you use a +string which is not listed, LilyPond will silently substitute piano. dit(code(transposing)) Tranpose the MIDI output. Set this property to the number of half-steps to transpose by. @@ -1247,7 +1285,7 @@ subsubsubsect(Staff properties) description( -dit(code(defaultclef)) Determines the default clef. See code(\clef) +dit(code(defaultClef)) Determines the default clef. See code(\clef) keyword. dit(code(nolines)) Sets the number of lines that the staff has. @@ -1269,7 +1307,9 @@ 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. +property is used to label subsequent lines. If the +code(midi_instrument) property is not set then code(instrument) is +used to determine the instrument for MIDI output. COMMENT(This prints the instrument name on top of the staff lines.) dit(code(abbrev)) Set length for tremolo to be used if no length is @@ -1290,11 +1330,11 @@ dit(code(timeSignatureStyle)) Changes the default two-digit layout written with two digits. dit(code(1)): All time signatures are typeset with a single digit, e.g. 3/2 is written as 3. - dit(code(C2/2,C4/4, old2/2, old3/2, old3/4, old4/4, old6/4 or - old9/4)): Tells Lilypond to use a specific symbol as time - signature, independently of the actual time signature. + dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2), + code(old3/4), code(old4/4), code(old6/4) or + code(old9/4)): Tells Lilypond to use a specific symbol as time + signature. ) - The different time signature characters are shown below with their names: mudela(fragment,center)( @@ -1317,8 +1357,6 @@ mudela(fragment,center)( } ) -COMMENT( timeSignatureSymbol? timeSignatureChar? ) - ) @@ -1454,22 +1492,54 @@ code(castingalgorithm). Equal to 0.0. ) -sect(The code(\paper) Block) +sect(Output) +label(output) label(paper) -The code(\paper) block may begin with an optional identifier reference. No +The output produced by LilyPond is controlled by the code(\paper) and +code(\midi) keywords. These keywords appear in the code(\score) block +to indicate that printed or musical output should be produced. If +neither keyword appears in a code(\score) block, then paper output is +produced but MIDI output is not produced. + +The contents of the code(\paper) and code(\midi) blocks can change the +output in various ways. These blocks can appear at the top level of a +Mudela file to set default parameters for each type of output. It is +still necessary to explicitly specify the output type in the +code(\score) blocks if you don't want the default behavior of +producing only paper output. + +The code(\paper) and code(\midi) blocks +may begin with an optional identifier reference. No identifier references are allowed anywhere else in the block. -The 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. The only way to find out what -variables are supported is to search the source code for code(get_var). +The code(\paper) block can contain the code(\shape) keyword; the +code(\midi) block can contain the code(\tempo) keyword. Both of them +can contain code(\translator) keywords. The code(\paper) block can +also contain identifier assignments and parameter assignments. Unlike +at the top level, these assignments must be terminated by a semicolon. + subsect(Paper variables) -There are a large number of paper variables that are used to 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). +There are a large number of paper variables that are used to control +details of the layout. Usually you will not want to change these +variables; they are set by default to vaules that depend on the font +size in use. The only way to find out what variables are supported is +to search the source code for code(get_var). Two variables that you +may want to change are code(linewidth) and code(indent). + +In order to change the font size used for the output, many variables +need to be changed. Some identifiers and initialization files can +simplify this process. The default size is 20pt. In order to select +a different size, you must do two things. At the top level, do +code(\include "paper)var(SZ)code(.ly") where var(SZ) is the height of +the staff in points. Values presently allowed are 11, 13, 16, 20, and +26. This loads some definitions, but does not cause them to take +effect. In order to actually change the size, you must use one of the +identifiers: code(\paper_eleven), code(\paper_thirteen), +code(\paper_sixteen), code(\paper_twenty) or code(\paper_twentysix) +inside a code(\paper) block. + description( dit(var(integer)) If an integer appears on the left side of an @@ -1513,16 +1583,24 @@ lines, calculated from the center of the lines. dit(code(linewidth)) Sets the width of the lines. If it is set to -1.0, then a single unjustified line is produced. dit(code(notewidth)) Width of an average note head. +dit(code(output)) Specifies an alternate +name for the TeX() output. A file(.tex) extension will be added to +the string you specify. dit(code(rulethickness)) Determines thickness of staff lines and bars. dit(code(slur_clip_angle)) dit(code(slur_clip_height)) dit(code(slur_clip_ratio)) -dit(code(slur_height_limit)) -dit(code(slur_ratio)) +dit(code(slur_height_limit)) Specifies the maximum height of slurs. +Normally equal to staff_height. +dit(code(slur_ratio)) Specifes the ratio of slur hight to slur width +to aim for. Default value is 0.3. dit(code(slur_rc_factor)) -dit(code(slur_slope_damping)) -dit(code(slur_thickness)) -dit(code(slur_x_gap)) +dit(code(slur_slope_damping)) Allows slurs to start and end at +different heights ???? Default value is 0.5. +dit(code(slur_thickness)) Specify slur thickness. Equal to code(1.4 * +\staffline) by default. +dit(code(slur_x_gap)) Horizontal space between note and slur. Set to +code(\interline / 5) by default. dit(code(slur_x_minimum)) dit(code(staffheight)) The height of the staff from the center of the bottom line to the center of the top line. Equal to to code(4 * \interline). @@ -1533,20 +1611,134 @@ dit(code(tie_slope_damping)) dit(code(tie_x_minimum)) ) + +subsect(MIDI Instrument Names) +label(midilist) + +The MIDI instrument name is set by the code(Staff."midi_instrument") +property or, if that property is not set, the code(Staff.instrument) +property. The instrument name should be chosen from this list. If +string does not exactly match one from this list then LilyPond uses +the default piano. + +COMMENT( acordina = accordion, tango accordian = concertina + distortion guitar = distorted guitar + orchestral strings = harp + pan flute = wood flute? ) + +verb("acoustic grand" "contrabass" "lead 7 (fifths)" +"bright acoustic" "tremolo strings" "lead 8 (bass+lead)" +"electric grand" "pizzicato strings" "pad 1 (new age)" +"honky-tonk" "orchestral strings" "pad 2 (warm)" +"electric piano 1" "timpani" "pad 3 (polysynth)" +"electric piano 2" "string ensemble 1" "pad 4 (choir)" +"harpsichord" "string ensemble 2" "pad 5 (bowed)" +"clav" "synthstrings 1" "pad 6 (metallic)" +"celesta" "synthstrings 2" "pad 7 (halo)" +"glockenspiel" "choir aahs" "pad 8 (sweep)" +"music box" "voice oohs" "fx 1 (rain)" +"vibraphone" "synth voice" "fx 2 (soundtrack)" +"marimba" "orchestra hit" "fx 3 (crystal)" +"xylophone" "trumpet" "fx 4 (atmosphere)" +"tubular bells" "trombone" "fx 5 (brightness)" +"dulcimer" "tuba" "fx 6 (goblins)" +"drawbar organ" "muted trumpet" "fx 7 (echoes)" +"percussive organ" "french horn" "fx 8 (sci-fi)" +"rock organ" "brass section" "sitar" +"church organ" "synthbrass 1" "banjo" +"reed organ" "synthbrass 2" "shamisen" +"accordion" "soprano sax" "koto" +"harmonica" "alto sax" "kalimba" +"concertina" "tenor sax" "bagpipe" +"acoustic guitar (nylon)" "baritone sax" "fiddle" +"acoustic guitar (steel)" "oboe" "shanai" +"electric guitar (jazz)" "english horn" "tinkle bell" +"electric guitar (clean)" "bassoon" "agogo" +"electric guitar (muted)" "clarinet" "steel drums" +"overdriven guitar" "piccolo" "woodblock" +"distorted guitar" "flute" "taiko drum" +"guitar harmonics" "recorder" "melodic tom" +"acoustic bass" "pan flute" "synth drum" +"electric bass (finger)" "blown bottle" "reverse cymbal" +"electric bass (pick)" "skakuhachi" "guitar fret noise" +"fretless bass" "whistle" "breath noise" +"slap bass 1" "ocarina" "seashore" +"slap bass 2" "lead 1 (square)" "bird tweet" +"synth bass 1" "lead 2 (sawtooth)" "telephone ring" +"synth bass 2" "lead 3 (calliope)" "helicopter" +"violin" "lead 4 (chiff)" "applause" +"viola" "lead 5 (charang)" "gunshot" +"cello" "lead 6 (voice)") + + + subsect(Translators) label(translators) The behavior of notation contexts is defined by the translators for those contexts. The translator for a context specifies what notations are handled by the context, it specifies what other contexts the -context can contain, and it sets property values for the context. 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: +context can contain, and it sets property values for the context. +There are different translators for each type of output. The +translators for paper output are defined in file(engraver.ly). The +translators for MIDI output are defined in file(performer.ly). + +The first thing that appears inside a code(\translator) definition is +the type of the context being created. This is specified with the +code(\type) keyword: code(\type) var(typename)code(;). After the type +of the context is specified, property assignments, the code(\name) +keyword and code(\consists), code(\accepts), and code(\remove) +keywords can appear in any order. The code(\name) keyword specifies +the name of the context that is handled by the translator. If the +name is not specified, the translator won't do anything. Each +code(\accepts) keyword specifies what contexts can be contained inside +this one. The code(\consists) keywords specify which notations are +handled by the context. Each code(\consists) keyword specifies the +name of an engraver (for paper ouput) or performer (for MIDI output) +which handles a certain notation. The code(\remove) keyword can be +used to remove a performer or engraver from the translator. + +In the code(\paper) block, it is also possible to define translator +identifiers. Like other block identifiers, the identifier can only +be used as the very first item of a translator. In order to define +such an identifier outside of code(\score), you must do +verb(\paper{ foo=\translator{ ... } +\score{ + \notes{ ... } + \paper{ \translator{ \foo ... } } +}) + +Some All of the standard translators have predefined identifiers, making +it easy to redefine these contexts by adding or removing items. +The predefined identifiers are: code(StaffContext), +code(RhythmicStaffContext), code(VoiceContext), code(ScoreContext), code(ScoreWithNumbers) + + +subsubsect(Paper Types and Engravers and Pre-defined Translators) + +Some pre-defined identifiers can simplify modification of translators. +The pre-defined identifiers are: +description( +dit(code(StaffContext)) Default Staff context. +dit(code(RhythmicStaffContext)) Default RhythmicStaff context. +dit(code(VoiceContext)) Default Voice context. +dit(code(ScoreContext)) Default Score context. +dit(code(ScoreWithNumbers)) Score context with numbering at the +Score level. +dit(code(BarNumberingStaffContext)) Staff context with numbering at +the Staff level. +dit(code(HaraKiriStaffContext)) +dit(code(OrchestralPartStaffContext)) +dit(code(OrchestralScoreContext)) +) +Using these pre-defined values, you can remove or add items to the +translator verb(\paper{ \translator{ \StaffContext + \remove Some_engraver; + \consists Different_engraver; }}) + + + +There are four types for paper translators: description( dit(code(Engraver_group_engraver)) dit(code(Hara_kiri_line_group_engraver)) @@ -1555,16 +1747,7 @@ description( ) 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. +The engravers for paper output are: description( dit(code(Abbreviation_beam_engraver)) @@ -1627,7 +1810,6 @@ 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 @@ -1636,3 +1818,22 @@ this engraver should be removed from code(Score) and placed in code(Staff). dit(code(Vertical_align_engraver)) ) + +subsubsect(MIDI Types and Performers) + +The types available for MIDI translators are: +description( +dit(code(Performer_group_performer)) +dit(code(Score_performer)) +dit(code(Staff_performer)) +) + +The performers for MIDI translators are: +description( +dit(code(Key_performer)) +dit(code(Time_signature_performer)) +dit(code(Note_performer)) +dit(code(Lyric_performer)) +dit(code(Swallow_performer)) +) + @@ -1,13 +1,17 @@ -pl 15.jcn3 - - try at scheme in Atom - -pl 15.jcn2 - - autoconf on guile - - graphical-lisp-element + silly half hook-up with autuplet - (see init/test/tup.ly) +pl 16 + - read property ydirection and tieYDirection for tie direction. + - bf: slur over rest. + - bf: include path + - part of jcn2 + - configure --enable-guile pl 15.jcn1 - - autoconf on mf,mfont mp,mpost + - autoconf on mf,mfont mp,mpost + +pl 15.am + - Lots of patches from *Adrian* *Mariano*! + +********** pl 15 pl 14.hwn1 @@ -11,6 +11,9 @@ grep for TODO and ugh/ugr/urg BUGS: + * egcs-1.1 -O2 -finline-functions causes crash + + * formatting of input stuff. * use real RTTI iso access_Stuff. @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=0 -PATCH_LEVEL=15 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=16 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/buildscripts/lilypond-profile.sh b/buildscripts/lilypond-profile.sh index 2cbd3e1115..c20fa45672 100644 --- a/buildscripts/lilypond-profile.sh +++ b/buildscripts/lilypond-profile.sh @@ -2,15 +2,16 @@ # set environment for LilyPond. To be installed in /etc/profile.d/ - +GS_LIB="@datadir@/afm" +GS_FONTPATH="@datadir@/ps" LILYINCLUDE="@datadir@/ly" + +# include an empty path component for the system wide includes. MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"} TEXINPUTS="@datadir@/tex:"${TEXINPUTS:=":"} -# todo: GS stuff - -export LILYINCLUDE MFINPUTS TEXINPUTS +export LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH -# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS +# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH diff --git a/config.hh.in b/config.hh.in index 48542789c4..4eba148977 100644 --- a/config.hh.in +++ b/config.hh.in @@ -27,3 +27,6 @@ /* define directory and path separators */ #define DIRSEP '@DIRSEP@' #define PATHSEP '@PATHSEP@' + +/* define GUILE-ification */ +#undef HAVE_LIBGUILE @@ -80,6 +80,8 @@ ac_help="$ac_help ac_help="$ac_help enable-printing turn on debug printing. Default: off" ac_help="$ac_help + enable-guile link in GUILE. Default: off" +ac_help="$ac_help with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale " ac_help="$ac_help with-lang=LANG use LANG as language to emit messages" @@ -703,7 +705,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:707: checking host system type" >&5 +echo "configure:709: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -728,7 +730,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:732: checking for $ac_word" >&5 +echo "configure:734: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -762,7 +764,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:766: checking for $ac_word" >&5 +echo "configure:768: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -799,7 +801,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:803: checking for $ac_word" >&5 +echo "configure:805: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -833,7 +835,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:837: checking for $ac_word" >&5 +echo "configure:839: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -866,7 +868,7 @@ test -n "$BASH" || BASH="/bin/sh" # Extract the first word of "${PYTHON:-python}", so it can be a program name with args. set dummy ${PYTHON:-python}; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:870: checking for $ac_word" >&5 +echo "configure:872: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1082,7 +1084,7 @@ EOF # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1086: checking for $ac_word" >&5 +echo "configure:1088: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1111,7 +1113,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1115: checking for $ac_word" >&5 +echo "configure:1117: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1159,7 +1161,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1163: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1165: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1169,11 +1171,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext <<EOF -#line 1173 "configure" +#line 1175 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1193,12 +1195,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1197: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1199: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1202: checking whether we are using GNU C" >&5 +echo "configure:1204: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1207,7 +1209,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1213: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1222,7 +1224,7 @@ if test $ac_cv_prog_gcc = yes; then ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1226: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1228: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1263,13 +1265,21 @@ fi # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) printing_b=no +guile_b=no # Check whether --enable-printing or --disable-printing was given. if test "${enable_printing+set}" = set; then enableval="$enable_printing" printing_b=$enableval fi +# Check whether --enable-guile or --disable-guile was given. +if test "${enable_guile+set}" = set; then + enableval="$enable_guile" + guile_b=$enableval +fi + + if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" cat >> confdefs.h <<\EOF @@ -1279,7 +1289,7 @@ EOF fi echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1283: checking how to run the C++ preprocessor" >&5 +echo "configure:1293: checking how to run the C++ preprocessor" >&5 if test -z "$CXXCPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1292,12 +1302,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext <<EOF -#line 1296 "configure" +#line 1306 "configure" #include "confdefs.h" #include <stdlib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1301: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then : @@ -1328,7 +1338,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1332: checking for $ac_word" >&5 +echo "configure:1342: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1359,7 +1369,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1363: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1373: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1369,11 +1379,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <<EOF -#line 1373 "configure" +#line 1383 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1393,12 +1403,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1397: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1407: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1402: checking whether we are using GNU C++" >&5 +echo "configure:1412: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1407,7 +1417,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -1422,7 +1432,7 @@ if test $ac_cv_prog_gxx = yes; then ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1426: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1436: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1452,17 +1462,17 @@ fi ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1456: checking for FlexLexer.h" >&5 +echo "configure:1466: checking for FlexLexer.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1461 "configure" +#line 1471 "configure" #include "confdefs.h" #include <FlexLexer.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out` if test -z "$ac_err"; then rm -rf conftest* @@ -1512,12 +1522,12 @@ fi echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:1516: checking whether explicit instantiation is needed" >&5 +echo "configure:1526: checking whether explicit instantiation is needed" >&5 if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1521 "configure" +#line 1531 "configure" #include "confdefs.h" template <class T> struct foo { static int baz; }; @@ -1527,7 +1537,7 @@ int main() { return foo<int>::baz; ; return 0; } EOF -if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* lily_cv_need_explicit_instantiation=no else @@ -1554,7 +1564,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1558: checking for $ac_word" >&5 +echo "configure:1568: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1596,7 +1606,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1600: checking for $ac_word" >&5 +echo "configure:1610: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1630,7 +1640,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1634: checking for $ac_word" >&5 +echo "configure:1644: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1697,7 +1707,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1701: checking for $ac_word" >&5 +echo "configure:1711: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1729,7 +1739,7 @@ test -n "$AR" || AR="error" # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1733: checking for $ac_word" >&5 +echo "configure:1743: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1784,7 +1794,7 @@ fi echo $ac_n "checking language""... $ac_c" 1>&6 -echo "configure:1788: checking language" >&5 +echo "configure:1798: checking language" >&5 case "$language" in En* | en* | Am* | am* | US* | us*) lang=English;; @@ -1820,7 +1830,7 @@ EOF echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:1824: checking for gettext in -lintl" >&5 +echo "configure:1834: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1828,7 +1838,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 1832 "configure" +#line 1842 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus @@ -1842,7 +1852,7 @@ int main() { gettext() ; return 0; } EOF -if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1872,12 +1882,12 @@ fi for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1876: checking for $ac_func" >&5 +echo "configure:1886: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1881 "configure" +#line 1891 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -1903,7 +1913,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:1907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1935,7 +1945,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1939: checking for $ac_word" >&5 +echo "configure:1949: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1965,7 +1975,7 @@ done test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh " echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6 -echo "configure:1969: checking whether msgfmt accepts -o" >&5 +echo "configure:1979: checking whether msgfmt accepts -o" >&5 msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" if test "$msgfmt_output" = ""; then echo "$ac_t""yes" 1>&6 @@ -1985,7 +1995,156 @@ echo "configure:1969: checking whether msgfmt accepts -o" >&5 fi -# AC_STEPMAKE_TEXMF + + # urg, never know what names these teTeX guys will think up + for ac_prog in mf +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2006: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$METAFONT"; then + ac_cv_prog_METAFONT="$METAFONT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_METAFONT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +METAFONT="$ac_cv_prog_METAFONT" +if test -n "$METAFONT"; then + echo "$ac_t""$METAFONT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$METAFONT" && break +done +test -n "$METAFONT" || METAFONT="no" + + if test "x$METAFONT" = "xno"; then + for ac_prog in mfont +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2041: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MFONT"; then + ac_cv_prog_MFONT="$MFONT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MFONT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MFONT="$ac_cv_prog_MFONT" +if test -n "$MFONT"; then + echo "$ac_t""$MFONT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MFONT" && break +done +test -n "$MFONT" || MFONT="-echo no mf or mfont" + + METAFONT=$MFONT + fi + + for ac_prog in mp +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2078: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$METAPOST"; then + ac_cv_prog_METAPOST="$METAPOST" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_METAPOST="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +METAPOST="$ac_cv_prog_METAPOST" +if test -n "$METAPOST"; then + echo "$ac_t""$METAPOST" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$METAPOST" && break +done +test -n "$METAPOST" || METAPOST="no" + + if test "x$METAPOST" = "xno"; then + for ac_prog in mpost +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2113: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MPOST"; then + ac_cv_prog_MPOST="$MPOST" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MPOST="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MPOST="$ac_cv_prog_MPOST" +if test -n "$MPOST"; then + echo "$ac_t""$MPOST" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MPOST" && break +done +test -n "$MPOST" || MPOST="-echo no mp or mpost" + + METAPOST=$MPOST + fi + + + + +# AC_STEPMAKE_TEXMF_DIRS if test "x$YODL" = "x"; then for ac_prog in striproff @@ -1993,7 +2152,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1997: checking for $ac_word" >&5 +echo "configure:2156: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2027,7 +2186,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2031: checking for $ac_word" >&5 +echo "configure:2190: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2061,7 +2220,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2065: checking for $ac_word" >&5 +echo "configure:2224: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2095,7 +2254,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2099: checking for $ac_word" >&5 +echo "configure:2258: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2128,7 +2287,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2132: checking for $ac_word" >&5 +echo "configure:2291: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2162,7 +2321,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2166: checking for $ac_word" >&5 +echo "configure:2325: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2196,7 +2355,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2200: checking for $ac_word" >&5 +echo "configure:2359: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2230,7 +2389,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2234: checking for $ac_word" >&5 +echo "configure:2393: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2280,8 +2439,64 @@ test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" +case $guile_b in + yes) + echo $ac_n "checking for scm_shell in -lguile""... $ac_c" 1>&6 +echo "configure:2446: checking for scm_shell in -lguile" >&5 +ac_lib_var=`echo guile'_'scm_shell | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lguile $LIBS" +cat > conftest.$ac_ext <<EOF +#line 2454 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char scm_shell(); + +int main() { +scm_shell() +; return 0; } +EOF +if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo guile | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <<EOF +#define $ac_tr_lib 1 +EOF + + LIBS="-lguile $LIBS" + +else + echo "$ac_t""no" 1>&6 +fi + + + ;; +esac + echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:2285: checking for 8-bit clean memcmp" >&5 +echo "configure:2500: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2289,7 +2504,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <<EOF -#line 2293 "configure" +#line 2508 "configure" #include "confdefs.h" #ifdef __cplusplus extern "C" void exit(int); @@ -2302,7 +2517,7 @@ main() } EOF -if { (eval echo configure:2306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -2320,12 +2535,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2324: checking for vprintf" >&5 +echo "configure:2539: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2329 "configure" +#line 2544 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char vprintf(); below. */ @@ -2351,7 +2566,7 @@ vprintf(); ; return 0; } EOF -if { (eval echo configure:2355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -2375,12 +2590,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2379: checking for _doprnt" >&5 +echo "configure:2594: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2384 "configure" +#line 2599 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt(); below. */ @@ -2406,7 +2621,7 @@ _doprnt(); ; return 0; } EOF -if { (eval echo configure:2410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -2433,12 +2648,12 @@ fi for ac_func in memmem snprintf vsnprintf gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2437: checking for $ac_func" >&5 +echo "configure:2652: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2442 "configure" +#line 2657 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2464,7 +2679,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:2683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2503,7 +2718,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2507: checking for $ac_word" >&5 +echo "configure:2722: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2717,6 +2932,10 @@ s%@RANLIB@%$RANLIB%g s%@localedir@%$localedir%g s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g s%@MSGFMT@%$MSGFMT%g +s%@METAFONT@%$METAFONT%g +s%@MFONT@%$MFONT%g +s%@METAPOST@%$METAPOST%g +s%@MPOST@%$MPOST%g s%@STRIPROFF@%$STRIPROFF%g s%@YODL@%$YODL%g s%@YODL2HTML@%$YODL2HTML%g diff --git a/configure.in b/configure.in index d4a297075f..69f8966897 100644 --- a/configure.in +++ b/configure.in @@ -16,10 +16,15 @@ AC_STEPMAKE_COMPILE # AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) printing_b=no +guile_b=no AC_ARG_ENABLE(printing, [ enable-printing turn on debug printing. Default: off], [printing_b=$enableval]) +AC_ARG_ENABLE(guile, + [ enable-guile link in GUILE. Default: off], + [guile_b=$enableval]) + if test "$optimise_b" = yes; then DEFINES="$DEFINES -DSTRING_UTILS_INLINED" AC_DEFINE(STRINGS_UTILS_INLINED) @@ -37,12 +42,19 @@ AC_STEPMAKE_MSGFMT AC_STEPMAKE_TEXMF # AC_STEPMAKE_TEXMF_DIRS AC_STEPMAKE_YODL -AC_CHECK_LIB(guile, scm_shell) + dnl should check out -print dnl huh? dnl AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir) +case $guile_b in + yes) + AC_CHECK_LIB(guile, scm_shell) + + ;; +esac + AC_FUNC_MEMCMP AC_FUNC_VPRINTF AC_CHECK_FUNCS(memmem snprintf vsnprintf gettext) diff --git a/init/declarations.ly b/init/declarations.ly index 462671530b..d28a53c62f 100644 --- a/init/declarations.ly +++ b/init/declarations.ly @@ -11,6 +11,8 @@ longa = \duration { -2 0 } Gourlay = 1.0 Wordwrap = 0.0 +papersize = "a4" + \include "paper20.ly" \paper{ @@ -33,7 +35,5 @@ nobreak = { \penalty = -10000; } \include "property.ly" -\include "scm.ly" - % music = "\melodic\relative c" diff --git a/init/paper11.ly b/init/paper11.ly index e20c03caa4..dac7cbd31b 100644 --- a/init/paper11.ly +++ b/init/paper11.ly @@ -4,9 +4,6 @@ paper_eleven = \paper { staffheight = 11.0\pt; - % a4 paper - linewidth = 15.0 \cm; - textheight = 15.0 \cm; % ugh see table11 for sizes quartwidth = 3.63\pt; diff --git a/init/paper13.ly b/init/paper13.ly index 0d5c383d89..96f5e61266 100644 --- a/init/paper13.ly +++ b/init/paper13.ly @@ -4,9 +4,6 @@ paper_thirteen = \paper { staffheight = 13.0\pt; - % a4 paper - linewidth = 15.0 \cm; - textheight = 18.0 \cm; % ugh see table13 for sizes quartwidth = 4.29\pt; @@ -18,6 +15,5 @@ paper_thirteen = \paper { 0=\symboltables { \table_thirteen } \include "params.ly"; - \include "a4.ly"; } diff --git a/init/paper16.ly b/init/paper16.ly index c7f7352521..11aa7a8fd2 100644 --- a/init/paper16.ly +++ b/init/paper16.ly @@ -10,7 +10,6 @@ paper_sixteen = \paper { staffheight = 16.0\pt; - linewidth = 15.5 \cm; % ugh, see table16 for sizes quartwidth = 5.28\pt; diff --git a/init/paper20.ly b/init/paper20.ly index c8bf25b35b..a67683b655 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -9,8 +9,6 @@ paper_twenty = \paper { staffheight = 20.0\pt; - % where to get papersize (e.g. a5, letter) - papersize = "a4"; % ugh see table20 for sizes quartwidth = 6.61\pt; diff --git a/init/paper26.ly b/init/paper26.ly index fcc19ae2dc..f8d662b64c 100644 --- a/init/paper26.ly +++ b/init/paper26.ly @@ -4,10 +4,9 @@ paper_twentysix = \paper { staffheight = 26.0\pt; - papersize = "a4"; % ugh see table26 for sizes - notewidth = 8.59\pt + quartwidth = 8.59\pt; wholewidth = 12.87\pt; arithmetic_basicspace = 2.; @@ -15,7 +14,7 @@ paper_twentysix = \paper { 0=\symboltables { \table_twentysix } \include "params.ly"; - linewidth = linewidth20; - textheight = textheight20; + linewidth = \linewidth20; + textheight = \textheight20; } diff --git a/init/scm.ly b/init/scm.ly deleted file mode 100644 index 24883e035e..0000000000 --- a/init/scm.ly +++ /dev/null @@ -1,8 +0,0 @@ -\scm " -(define (add-column p) (display \"adding column (in guile): \") (display p) (newline)) -(define (dashed-slur o l) (newline) (display \"output type: \") (display o) (newline) (display \"controls: \") (map display l) (newline)) -"; - -% deze is blond -% ((lambda (o) (dashed-slur o '((0.0 0.0) (17.2124966172942 -16.8303258151405) (161.324688856776 -15.2124966172942) (178.155014671916 2.0)))) 'ps) - diff --git a/lily/atom.cc b/lily/atom.cc index 3f79970b71..76b59197d3 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -76,14 +76,12 @@ Atom::Atom () But Atom is used as a simple type *everywhere*, and we don't have virtual contructors. */ - lambda_ = 0; str_ = global_lookup_l->unknown_str (); } Atom::Atom (String s, Box b) : dim_ (b) { - lambda_ = 0; str_ = s; } diff --git a/lily/auto-plet-engraver.cc b/lily/auto-plet-engraver.cc index 3ed45b2a46..8812f6245c 100644 --- a/lily/auto-plet-engraver.cc +++ b/lily/auto-plet-engraver.cc @@ -9,7 +9,7 @@ #include "auto-plet-engraver.hh" #include "command-request.hh" -#include "graphical-lisp-element.hh" +#include "slur.hh" #include "note-column.hh" bool @@ -27,11 +27,12 @@ Tuplet_engraver::do_try_request (Request *r) return true; } + void Tuplet_engraver::do_process_requests () { int stopcount =0; - Link_array<Graphical_lisp_element> start_arr; + Link_array<Slur> start_arr; for (int i=0; i < bracket_req_arr_.size (); i++) { @@ -39,17 +40,16 @@ Tuplet_engraver::do_process_requests () stopcount++; if (bracket_req_arr_[i]->spantype == Span_req::START) { - Graphical_lisp_element* glep = new Graphical_lisp_element ("tuplet"); - start_arr.push (glep); -// lots of stuff does info->elem_l_->is_type () -// announce_element (Score_element_info (glep, bracket_req_arr_[i])); + Slur *sp =new Slur; + start_arr.push (sp); + announce_element (Score_element_info (sp, bracket_req_arr_[i])); } } for (; stopcount--; ) { - Graphical_lisp_element* glep = started_span_p_arr_.pop (); - stop_now_span_p_arr_.push (glep); + Slur *sp = started_span_p_arr_.pop (); + stop_now_span_p_arr_.push (sp); } for (int i=0; i < start_arr.size (); i++) @@ -63,8 +63,7 @@ Tuplet_engraver::acknowledge_element (Score_element_info i) { Note_column *nc = (Note_column*)i.elem_l_->access_Item (); for (int j =0; j <started_span_p_arr_.size (); j++) -// started_span_p_arr_[j]->add_column (nc); - started_span_p_arr_[j]->call ("add-column", (void*)nc); + started_span_p_arr_[j]->add_column (nc); } } diff --git a/lily/engraver.cc b/lily/engraver.cc index 3ecd606e92..ecad055870 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -26,18 +26,13 @@ Engraver::announce_element (Score_element_info i) daddy_grav_l()->announce_element (i); } + void Engraver::typeset_element (Score_element*p) { daddy_grav_l()->typeset_element (p); } -void -Engraver::typeset_element (Graphical_lisp_element*p) -{ - daddy_grav_l ()->typeset_element (p); -} - Paper_def* Engraver::paper() const { diff --git a/lily/graphical-lisp-element.cc b/lily/graphical-lisp-element.cc deleted file mode 100644 index 8b9fdefc1a..0000000000 --- a/lily/graphical-lisp-element.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* - graphical-lisp-element.cc -- implement Graphical_lisp_element - - source file of the GNU LilyPond music typesetter - - (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org> -*/ - -#include "graphical-lisp-element.hh" -#include "string.hh" -#include "debug.hh" - -#undef IMPLEMENT_STATIC_NAME -#define IMPLEMENT_STATIC_NAME(c)\ -char const* c::static_name ()\ -{ return type_str_.ch_C (); }\ -size_t c::static_class_size () { return sizeof (c); } - -IMPLEMENT_IS_TYPE_B (Graphical_lisp_element); - -Graphical_lisp_element::Graphical_lisp_element (String str) -{ - type_str_ = str; -} - -void* -Graphical_lisp_element::access (String str) -{ - SCM scm; -// scm = gh_cons (gh_str02scm (str.ch_C ())); -// scm = gh_cons (gh_symbol2scm (str.ch_C ())); - return 0; -} - -void -Graphical_lisp_element::call (String str, void* p) -{ -// gh_apply (str.ch_C (), SCM_EOL); -// gh_apply (str.ch_C (), SCM_EOL); - -// mm, common lisp only? -// String ptr = to_str (" \\%x", p); - String ptr = to_str (" '%x", p); - str = "(" + str + ptr + ")"; - gh_eval_str (str.ch_l ()); -// gh_eval_str ("(add-column 0)"); -} diff --git a/lily/include/atom.hh b/lily/include/atom.hh index fcd434f0ab..0d88e7ce31 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -9,18 +9,17 @@ #ifndef ATOM_HH #define ATOM_HH -#include "lily-guile.hh" #include "string.hh" #include "box.hh" #include "lily-proto.hh" + /// a symbol which can be translated, and freely copied class Atom { Offset off_; public: String str_; String font_; - SCM lambda_; Box dim_; Offset offset () const; diff --git a/lily/include/auto-plet-engraver.hh b/lily/include/auto-plet-engraver.hh index 14b1fefcc4..a8cafb9c7c 100644 --- a/lily/include/auto-plet-engraver.hh +++ b/lily/include/auto-plet-engraver.hh @@ -23,8 +23,8 @@ public: protected: Link_array<Bracket_req> bracket_req_arr_; - Link_array<Graphical_lisp_element> started_span_p_arr_; - Link_array<Graphical_lisp_element> stop_now_span_p_arr_; + Link_array<Slur> started_span_p_arr_; + Link_array<Slur> stop_now_span_p_arr_; virtual void do_removal_processing (); virtual void acknowledge_element (Score_element_info); diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index a76a351861..a0afdc8f5e 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -16,7 +16,7 @@ #include "musical-pitch.hh" /** Request which are assumed to be "happening" before the - musical requests. */ + musical requests. Not coupled to a note or rest. */ class Command_req : public virtual Request { public: REQUESTMETHODS(Command_req); diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 04fc21baa5..a8086af1f5 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -36,7 +36,6 @@ protected: Invoke walker method to typeset element. Default: pass on to daddy. */ virtual void typeset_element (Score_element*elem_p); - virtual void typeset_element (Graphical_lisp_element*); /** take note of item/spanner diff --git a/lily/include/graphical-lisp-element.hh b/lily/include/graphical-lisp-element.hh deleted file mode 100644 index 036b727c77..0000000000 --- a/lily/include/graphical-lisp-element.hh +++ /dev/null @@ -1,39 +0,0 @@ -/* - graphical-lisp-element.hh -- declare Graphical_lisp_element - - source file of the GNU LilyPond music typesetter - - (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org> -*/ - - -#ifndef GRAPHICAL_LISP_ELEMENT_HH -#define GRAPHICAL_LISP_ELEMENT_HH - -#include "lily-guile.hh" -#include "lily-proto.hh" -#include "string.hh" - -#define virtual -#define static -#include "virtual-methods.hh" - -class Graphical_lisp_element -{ -public: - DECLARE_MY_RUNTIME_TYPEINFO; - - Graphical_lisp_element (String); - - void* access (String); - void call (String, void*); - -private: - String type_str_; -}; - -#undef virtual -#undef static - -#endif // GRAPHICAL_LISP_ELEMENT_HH - diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 2e626b2880..1ea707038e 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -9,8 +9,13 @@ #ifndef LILY_GUILE_HH #define LILY_GUILE_HH +#include "config.hh" + +#ifdef HAVE_LIBGUILE extern "C" { #include <guile/gh.h> } - +#else +typedef long SCM; +#endif #endif // LILY_GUILE_HH diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 184eec14c0..b7af83ec16 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -77,7 +77,6 @@ struct Element_group_item; struct Engraver_group_engraver; struct General_script_def; struct Graphical_element; -struct Graphical_lisp_element; struct Graphical_axis_group; struct Mark_req; struct Music_output; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 4d2325ae82..7efe60bb7e 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -40,8 +40,7 @@ public: Atom beam (Real,Real, Real) const; virtual String character_str (int i) const; Atom clef (String) const; -// virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const = 0; - virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const; + virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const = 0; Atom dots () const; Atom dynamic (String) const; Atom fill (Box b) const; diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index dc40138d13..526504f14e 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -116,7 +116,7 @@ struct Midi_note : public Midi_item { int pitch_i () const; virtual String str () const; - int const c0_pitch_i_c_ = 60; + static int const c0_pitch_i_c_ = 60; Byte dynamic_byte_; }; diff --git a/lily/include/music.hh b/lily/include/music.hh index b05bc0db19..efb2f712ee 100644 --- a/lily/include/music.hh +++ b/lily/include/music.hh @@ -17,8 +17,8 @@ #include "lily-proto.hh" #include "string.hh" -/** - Anything which has length or pitch. +/** Music is anything that has duration and supports both time compression and + transposition. In Lily, everything that can be thought to have a length and a pitch (which has a duration which can be transposed) is considered "music", @@ -31,23 +31,28 @@ class Music:public Input { public: - /** The kind of iterator needed to walk this music. This doesn't + /** The kind of translation needed for this music. This doesn't make sense for simple (ie non-list) music, but it does no harm here. Yes, it did harm Music_sequence: you can forget to copy it. */ String translator_type_str_; - /// what name (or look for this name) + /// what identification for the translation unit String translator_id_str_; virtual Musical_pitch to_relative_octave (Musical_pitch); - virtual Moment duration () const; + + /// The duration of this piece of music + virtual Moment duration () const; virtual ~Music(){} void print() const; - virtual void transpose (Musical_pitch ); - virtual void compress (Moment); + /// Transpose, with the interval central C to #p# + virtual void transpose (Musical_pitch p); + + /// Scale the music in time by #factor#. + virtual void compress (Moment factor); VIRTUAL_COPY_CONS(Music,Music); DECLARE_MY_RUNTIME_TYPEINFO; Music(); diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index 70e6467542..2f3c3f599c 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -16,7 +16,7 @@ #include "musical-pitch.hh" /** - A request which is coupled to a #Request_chord# + A request which is coupled to a note (that has duration). Base class only */ class Musical_req : public virtual Request { diff --git a/lily/include/ps-lookup.hh b/lily/include/ps-lookup.hh index 9b8ef622e5..2eb9ed025a 100644 --- a/lily/include/ps-lookup.hh +++ b/lily/include/ps-lookup.hh @@ -22,7 +22,7 @@ public: virtual Atom afm_find (String s) const; virtual Atom* atom_p (String, int, Box) const; virtual String character_str (int i) const; -// virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const; + virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const; virtual Atom hairpin (Real width, bool decresc, bool continued) const; virtual Lookup* lookup_p (Lookup const&) const; virtual Lookup* lookup_p (Symtables const&) const; diff --git a/lily/include/request.hh b/lily/include/request.hh index c45d5905e1..7d976a648e 100644 --- a/lily/include/request.hh +++ b/lily/include/request.hh @@ -20,10 +20,11 @@ #define DEFAULTACCESSOR(T) virtual T *access_ ## T () { return 0; } -/** - An atom of musical information . - Hungarian postfix: req - @see lilygut manpage +/** An atom of musical information. This is an abstract class for any + piece of music that does not contain other Music. + + Hungarian postfix: req + */ class Request : public Music { diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh index 34a5a49716..95d69a0d48 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/score-element-info.hh @@ -19,12 +19,10 @@ */ struct Score_element_info { Score_element * elem_l_; - Graphical_lisp_element * lisp_l_; Request*req_l_; Array<Engraver*> origin_grav_l_arr_; Score_element_info (Score_element*, Request*); - Score_element_info (Graphical_lisp_element*, Request*); Score_element_info(); }; diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 2f7883bb41..5d59fc06f7 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -53,7 +53,6 @@ protected: virtual void announce_element (Score_element_info); virtual void do_announces(); virtual void typeset_element (Score_element*elem_p); - virtual void typeset_element (Graphical_lisp_element*elem_p); virtual void do_pre_move_processing(); virtual void do_add_processing (); }; diff --git a/lily/include/tex-lookup.hh b/lily/include/tex-lookup.hh index 4b9d598e08..cdb9839fcc 100644 --- a/lily/include/tex-lookup.hh +++ b/lily/include/tex-lookup.hh @@ -22,7 +22,7 @@ public: virtual Atom afm_find (String s) const; virtual String character_str (int i) const; -// virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const; + virtual Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const; virtual Atom* atom_p (String, int, Box) const; Atom embed (Atom a) const; virtual Atom hairpin (Real width, bool decresc, bool continued) const; diff --git a/lily/include/translator-change.hh b/lily/include/translator-change.hh index 8de7b806c5..f9d626524d 100644 --- a/lily/include/translator-change.hh +++ b/lily/include/translator-change.hh @@ -10,6 +10,9 @@ #ifndef TRANSLATOR_CHANGE_HH #define TRANSLATOR_CHANGE_HH +/** Change the nesting of the current translation. Uses the type_str_ + and id_str_ differently. + */ class Translator_change : public Music { diff --git a/lily/lookup.cc b/lily/lookup.cc index faed69f1aa..8ba88483f5 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -151,81 +151,6 @@ Lookup::clef (String st) const } Atom -Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const -{ - assert (controls.size () == 8); - - Real dx = controls[3].x () - controls[0].x (); - Real dy = controls[3].y () - controls[0].y (); - - Atom a; - a.font_ = font_; - a.dim_[X_AXIS] = Interval (0, dx); - a.dim_[Y_AXIS] = Interval (0 <? dy, 0 >? dy); - -#if 0 - - for (int i = 1; i < 4; i++) - ps += String_convert::double_str (controls[i].x ()) + " " - + String_convert::double_str (controls[i].y ()) + " "; - - ps += String_convert::double_str (controls[0].x ()) + " " - + String_convert::double_str (controls[0].y ()) + " "; - - ps += String_convert::double_str (thick) + " "; - Real on = dash > 1? thick * dash - thick : 0; - Real off = 2 * thick; - ps += "[" + String_convert::double_str (on) + " "; - ps += String_convert::double_str (off) + "] "; - ps += String_convert::int_str (0) + " "; - ps += "draw_dashed_slur "; - - Atom a; - a.str_ = ps; - a.font_ = font_; - a.dim_[X_AXIS] = Interval (0, dx); - a.dim_[Y_AXIS] = Interval (0 <? dy, 0 >? dy); - - a.str_ = ps; - -#else - - SCM list_scm = gh_eval_str ("list"); - // ((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2)) - SCM controls_scm = - gh_cons (gh_call2 (list_scm, gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())), - gh_cons (gh_call2 (list_scm, gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())), - gh_cons (gh_call2 (list_scm, gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())), - gh_cons (gh_call2 (list_scm, gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())), - SCM_EOL)))); - - gh_newline (); - gh_display (controls_scm); - gh_newline (); - - SCM append_scm = gh_eval_str ("append"); - - // (dashed-slur o ((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2))) - SCM dashed_slur_scm = - gh_call1 (gh_eval_str ("list"), - gh_call2 (append_scm, - gh_eval_str ("cons '(dashed-slur o)"), - gh_call1 (gh_eval_str ("list"), controls_scm))); - gh_display (dashed_slur_scm); - gh_newline (); - - // (lambda (o) dashed-slur o ((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2))) - a.lambda_ = - gh_call2 (append_scm, gh_eval_str ("'(lambda (o))"), dashed_slur_scm); - gh_display (a.lambda_); - gh_newline (); - -#endif - - return a; -} - -Atom Lookup::dots () const { return afm_find (String ("dots") + String ("-") + String ("dot")); diff --git a/lily/main.cc b/lily/main.cc index 767e106f23..87af66cfe9 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -10,8 +10,6 @@ #include <iostream.h> #include <assert.h> #include <locale.h> -#include "lily-guile.hh" - #include "proto.hh" #include "dimensions.hh" #include "plist.hh" @@ -25,7 +23,7 @@ #include "debug.hh" #include "ps-lookup.hh" #include "tex-lookup.hh" - +#include "lily-guile.hh" #if HAVE_GETTEXT #include <libintl.h> @@ -188,19 +186,19 @@ identify () *mlog << get_version_str () << endl; } -#if 0 -void +void guile_init () { +#ifdef HAVE_LIBGUILE gh_eval_str ("(define (add-column p) (display \"adding column (in guile): \") (display p) (newline))"); -} #endif +} -void +int main_prog (int argc, char **argv) { - //guile_init (); - + guile_init (); + // facilitate binary distributions char const *env_lily = getenv ("LILYPONDPREFIX"); String prefix_directory; @@ -239,9 +237,8 @@ main_prog (int argc, char **argv) global_path.add (prefix_directory + "/share/lilypond"); } - global_path.add (String (DIR_DATADIR) + "/init/"); - - global_path.push (DIR_DATADIR); + global_path.add (String (DIR_DATADIR) + "/ly/"); + global_path.add (String (DIR_DATADIR) + "/afm/"); Getopt_long oparser (argc, argv,theopts); String init_str; @@ -340,13 +337,6 @@ main_prog (int argc, char **argv) do_one_file (i, default_outname_base_global); } -// return exit_status_i_; -} - -int -main (int argc, char **argv) -{ - gh_enter (argc, argv, (void(*)())main_prog); return exit_status_i_; } @@ -387,3 +377,19 @@ distill_inname_str (String name_str, String& ext_r) return str; } + +#ifdef HAVE_LIBGUILE +int +main (int argc, char **argv) +{ + gh_enter (argc, argv, (void(*)())main_prog); + return exit_status_i_; +} + +#else +int main (int argc, char **argv) +{ + return main_prog (argc, argv); +} + +#endif diff --git a/lily/midi-item.cc b/lily/midi-item.cc index 525140102e..53f36d6a1e 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -153,9 +153,9 @@ char const* const instrument_name_sz_a_[ ] = { /* 19 */ "rock organ", /* 20 */ "church organ", /* 21 */ "reed organ", - /* 22 */ "accoridan", + /* 22 */ "accordion", /* 23 */ "harmonica", - /* 24 */ "tango accordian", + /* 24 */ "concertina", /* (25-32 guitar) */ /* 25 */ "acoustic guitar (nylon)", @@ -164,7 +164,7 @@ char const* const instrument_name_sz_a_[ ] = { /* 28 */ "electric guitar (clean)", /* 29 */ "electric guitar (muted)", /* 30 */ "overdriven guitar", - /* 31 */ "distortion guitar", + /* 31 */ "distorted guitar", /* 32 */ "guitar harmonics", /* (33-40 bass) */ diff --git a/lily/my-lily-lexer.cc b/lily/my-lily-lexer.cc index 4c7d05a9a2..82948a3067 100644 --- a/lily/my-lily-lexer.cc +++ b/lily/my-lily-lexer.cc @@ -55,7 +55,6 @@ static Keyword_ent the_key_tab[]={ {"pt", PT_T}, {"relative", RELATIVE}, {"remove", REMOVE}, - {"scm", SCHEME}, {"score", SCORE}, {"script", SCRIPT}, {"shape", SHAPE}, diff --git a/lily/note-column.cc b/lily/note-column.cc index 1085a3c071..8f700129e5 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -38,9 +38,15 @@ Interval_t<int> Note_column::head_positions_interval() const { ((Note_column*)this)->sort(); - return Interval_t<int> (head_l_arr_[0]->position_i_, - head_l_arr_.top()->position_i_); + Interval_t<int> iv; + + iv.set_empty (); + if (head_l_arr_.size ()) + iv = Interval_t<int>(head_l_arr_[0]->position_i_, + head_l_arr_.top()->position_i_); + + return iv; } Interval diff --git a/lily/parser.yy b/lily/parser.yy index 55655080a3..428fff3c37 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -10,7 +10,6 @@ */ #include <iostream.h> -#include "lily-guile.hh" #include "notename-table.hh" #include "scalar.hh" #include "translation-property.hh" @@ -196,7 +195,6 @@ yylex (YYSTYPE *s, void * v_l) %token PT_T %token RELATIVE %token REMOVE -%token SCHEME /* token vs typedef; can't be named SCM */ %token SCORE %token SCRIPT %token SHAPE @@ -323,16 +321,8 @@ toplevel_expression: Midi_def_identifier ($1, MIDI_IDENTIFIER); THIS->lexer_p_->set_identifier ("$defaultmidi", id) } - | embedded_scm { - } ; -embedded_scm: - SCHEME STRING ';' { - gh_eval_str ($2->ch_C ()); - delete $2; - }; - check_version: VERSION STRING ';' { Mudela_version ver (*$2); diff --git a/lily/ps-lookup.cc b/lily/ps-lookup.cc index 3d4333c098..8d160b1f88 100644 --- a/lily/ps-lookup.cc +++ b/lily/ps-lookup.cc @@ -62,7 +62,6 @@ Ps_lookup::character_str (int i) const return to_str (i, "(\\%03o)"); } -#if 0 Atom Ps_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const { @@ -96,7 +95,6 @@ Ps_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const a.font_ = font_; return a; } -#endif Atom Ps_lookup::hairpin (Real width, bool decresc, bool continued) const diff --git a/lily/ps-outputter.cc b/lily/ps-outputter.cc index 06597cda87..d0ad70ef39 100644 --- a/lily/ps-outputter.cc +++ b/lily/ps-outputter.cc @@ -14,8 +14,6 @@ #include "array.hh" #include "string-convert.hh" #include "debug.hh" -#include "lookup.hh" -#include "main.hh" Ps_outputter::Ps_outputter (Paper_stream *s) :Paper_outputter (s) @@ -64,39 +62,7 @@ Ps_outputter::output_molecule (Molecule const*m, Offset o, char const *nm) if (check_debug) *outstream_l_ << String ("\n%start: ") << nm << "\n"; -#if 0 Paper_outputter::output_molecule (m, o, nm, "% % {%}placebox \n"); -#else - String s = "% % {%}placebox \n"; - - if (check_debug) - *outstream_l_ << String ("\n%start: ") << nm << "\n"; - - for (PCursor <Atom*> i (m->atoms_); i.ok (); i++) - { - Offset a_off = i->offset (); - a_off += o; - - switch_to_font (i->font_); - - Array<String> a; - String r; - - a.push (global_lookup_l->print_dimen (a_off.y())); - a.push (global_lookup_l->print_dimen (a_off.x())); - if (i->lambda_) - { - gh_call1 (i->lambda_, gh_eval_str ("'ps")); - // char* c = gh_scm2newstr (gh_call1 (i->lambda_, gh_eval_str ("'ps")), NULL); - // a.push (String (c)); - // free (c); - } - else - a.push (i->str_); - r += global_lookup_l->substitute_args (s, a); - *outstream_l_ << r; - } -#endif } void diff --git a/lily/score-element-info.cc b/lily/score-element-info.cc index 8288c16cc1..a0c6f68e85 100644 --- a/lily/score-element-info.cc +++ b/lily/score-element-info.cc @@ -12,21 +12,12 @@ Score_element_info::Score_element_info (Score_element*s_l, Request*r_l) { elem_l_ = s_l; - lisp_l_ = 0; - req_l_ = r_l; -} - -Score_element_info::Score_element_info (Graphical_lisp_element*g_l, Request*r_l) -{ - elem_l_ = 0; - lisp_l_ = g_l; req_l_ = r_l; } Score_element_info::Score_element_info() { elem_l_ = 0; - lisp_l_ = 0; req_l_ = 0; } diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 1c43b8c59e..1b30731fd7 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -16,7 +16,6 @@ #include "score-column.hh" #include "command-request.hh" #include "paper-def.hh" -#include "graphical-lisp-element.hh" Score_engraver::Score_engraver() @@ -118,14 +117,7 @@ Score_engraver::do_announces() void Score_engraver::typeset_element (Score_element *elem_p) { - elem_p_arr_.push (elem_p); -} - -void -Score_engraver::typeset_element (Graphical_lisp_element* elem_p) -{ - *mlog << "not typesetting: " << elem_p->static_name () << "\n"; - delete elem_p; + elem_p_arr_.push(elem_p); } void @@ -139,7 +131,9 @@ Score_engraver::typeset_all() Spanner *s = elem_p->access_Spanner (); pscore_p_->typeset_unbroken_spanner (s); - /* + + + /* do something sensible if spanner not spanned on 2 items. */ @@ -234,6 +228,7 @@ Score_engraver::get_staff_info() const } + Music_output* Score_engraver::get_output_p () { diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 5ccf0386f6..768d8c42b1 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -98,12 +98,12 @@ Slur_engraver::do_pre_move_processing() { Scalar dir (get_property ("slurydirection")); Scalar dir2 (get_property ("ydirection")); - if (!dir.length_i () && dir2.length_i ()) + if (dir.length_i ()) { - dir_ = (Direction) int(dir2); + dir_ = (Direction) sign (int(dir)); } - else if (dir.length_i ()) - dir_ = (Direction) int (dir); + else if (dir2.length_i ()) + dir_ = (Direction) sign (int (dir2)); for (int i = 0; i < end_slur_l_arr_.size(); i++) { diff --git a/lily/slur.cc b/lily/slur.cc index 14edd7b3e2..28bd21fa6e 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -38,6 +38,8 @@ Slur::Slur () void Slur::add_column (Note_column*n) { + if (!n->head_l_arr_.size ()) + warning (_ ("Putting slur over rest.")); encompass_arr_.push (n); add_dependency (n); } @@ -144,7 +146,8 @@ Slur::do_post_processing () /* normal slur */ - else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_) + else if (extrema[d]->stem_l_ && !extrema[d]->stem_l_->transparent_b_ + && extrema[d]->head_l_arr_.size ()) { Real notewidth_f = extrema[d]->width ().length (); dy_f_drul_[d] = (int)rint (extrema[d]->stem_l_->height ()[dir_]); @@ -157,17 +160,17 @@ Slur::do_post_processing () dx_f_drul_[d] += 0.25 * (dir_ * d) * d * notewidth_f; } } - else - { - Real notewidth_f = extrema[d]->width ().length (); - dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval () - [dir_]) * internote_f; - dx_f_drul_[d] += 0.5 * notewidth_f - d * gap_f; + else + { + Real notewidth_f = extrema[d]->width ().length (); + dy_f_drul_[d] = (int)rint (extrema[d]->head_positions_interval () + [dir_]) * internote_f; + dx_f_drul_[d] += 0.5 * notewidth_f - d * gap_f; } - dy_f_drul_[d] += dir_ * interline_f; - if (extrema[d]->stem_l_ && (dir_ == extrema[d]->stem_l_->dir_)) - dy_f_drul_[d] -= dir_ * internote_f; - } + dy_f_drul_[d] += dir_ * interline_f; + if (extrema[d]->stem_l_ && (dir_ == extrema[d]->stem_l_->dir_)) + dy_f_drul_[d] -= dir_ * internote_f; + } while (flip(&d) != LEFT); // now that both are set, do dependent diff --git a/lily/tex-lookup.cc b/lily/tex-lookup.cc index 7ca6b43ac7..4f10886e11 100644 --- a/lily/tex-lookup.cc +++ b/lily/tex-lookup.cc @@ -63,13 +63,11 @@ Tex_lookup::character_str (int i) const return Lookup::character_str (i); } -#if 0 Atom Tex_lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const { return embed (Ps_lookup::dashed_slur (controls, thick, dash)); } -#endif Atom Tex_lookup::embed (Atom a) const @@ -110,7 +108,7 @@ header_to_tex_string (Scope *head) String s; String lily_id_str = "Lily was here, " + String (lily_version_number_sz ()); - s+= "\\def\\LilyIdString{" + lily_id_str + "}"; + s+= "\\def\\LilyIdString{" + lily_id_str + "}\n"; for (Dictionary_iter<Identifier*> i(*head); i.ok (); i++) { diff --git a/lily/ties-engraver.cc b/lily/ties-engraver.cc index 8f9aa39777..54e604d572 100644 --- a/lily/ties-engraver.cc +++ b/lily/ties-engraver.cc @@ -103,7 +103,16 @@ Ties_engraver::do_pre_move_processing() for (int i =0; i < end_tie_p_arr_.size (); i++) { - typeset_element (end_tie_p_arr_[i]); + Scalar tie_dir (get_property ("tieYDirection")); + Scalar y_dir (get_property ("ydirection")); + Direction dir; + if (tie_dir.length_i ()) + dir = (Direction) sign (int(tie_dir)); + else if (y_dir.length_i ()) + dir = (Direction) sign (int (y_dir)); + + end_tie_p_arr_[i]->dir_ = dir; + typeset_element (end_tie_p_arr_[i]); } end_tie_p_arr_ = tie_p_arr_; diff --git a/make/STATE-VECTOR b/make/STATE-VECTOR index abf88bfd16..010ed0a6f9 100644 --- a/make/STATE-VECTOR +++ b/make/STATE-VECTOR @@ -100,6 +100,5 @@ 1.0.14 1.0.14.hwn1 1.0.15 -1.0.15.jcn1 -1.0.15.jcn2 -1.0.15.jcn3 +1.0.15.uu1 +1.0.16 diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index 188f492941..b8ac5e2f64 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.0.15 -Inschrijf datum: 12OCT98 +Versie: 1.0.16 +Inschrijf datum: 14OCT98 Beschrijving: @FLAPTEKST@ Trefwoorden: muziek typezetten midi notatie Auteur: hanwen@stack.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 770k lilypond-1.0.15.tar.gz + 770k lilypond-1.0.16.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.0.15.tar.gz + 770k lilypond-1.0.16.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 35e54ee5dc..a3e081c918 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.0.15 -Entered-date: 12OCT98 +Version: 1.0.16 +Entered-date: 14OCT98 Description: LilyPond is the GNU Project music typesetter. This program can print beautiful sheet music from a music definition file. It can also play @@ -14,8 +14,8 @@ Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 770k lilypond-1.0.15.tar.gz + 770k lilypond-1.0.16.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.0.15.tar.gz + 770k lilypond-1.0.16.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index bf545ca81f..4735073460 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.0.15 +Version: 1.0.16 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.0.15.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.0.16.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl> diff --git a/make/toplevel.make.in b/make/toplevel.make.in index 99f7a0ad84..d41d58a405 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -9,7 +9,8 @@ depth = . # descent order into subdirectories: # SUBDIRS = scripts buildscripts flower lib lily mf mi2mu po debian \ - Documentation init input tex make mutopia test intl stepmake + Documentation init input tex make mutopia test intl stepmake\ + ps # SCRIPTS = configure aclocal.m4 diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly index 97dacd591d..e0d35b837d 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly @@ -9,7 +9,7 @@ But merging melodic and scripts doen't work too well yet (see viola_scripts). n = { \slurnormal } d = { \slurdotted } -comma = "\\sethuge\\ \\ ,"; +comma = "\\sethuge\\ \\ ," allemande_a = \notes \relative c { \voiceone a'16 | diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly index 8434573408..d5702db665 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly @@ -2,6 +2,6 @@ instrument="Cello"; } -instrument="cello"; +instrument="cello" \include "solo-cello-suite-ii.ly" diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly index b6db279eec..2e65093260 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-viola.ly @@ -2,6 +2,6 @@ instrument="Alto"; } -instrument="viola"; +instrument="viola" \include "solo-cello-suite-ii.ly" diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly index da308e05bc..1896249d91 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly @@ -10,16 +10,16 @@ composer = "Johann Sebastian Bach (1685-1750)"; % \include "prelude-" + \instrument + ".ly"; -i = "prelude-" + \instrument + ".ly"; -ii = "allemande-" + \instrument + ".ly"; -iii = "courante-" + \instrument + ".ly"; -iv = "sarabande-" + \instrument + ".ly"; -v = "menuetto-" + \instrument + ".ly"; -vi = "gigue-" + \instrument + ".ly"; +i = "prelude-" + \instrument + ".ly" +ii = "allemande-" + \instrument + ".ly" +iii = "courante-" + \instrument + ".ly" +iv = "sarabande-" + \instrument + ".ly" +v = "menuetto-" + \instrument + ".ly" +vi = "gigue-" + \instrument + ".ly" -\include \i; -\include \ii; -\include \iii; -\include \iv; -\include \v; -\include \vi; +\include \i +\include \ii +\include \iii +\include \iv +\include \v +\include \vi diff --git a/ps/GNUmakefile b/ps/GNUmakefile new file mode 100644 index 0000000000..d4353253c4 --- /dev/null +++ b/ps/GNUmakefile @@ -0,0 +1,15 @@ +# tex/Makefile + +depth = .. + + +PS_FILES = $(wildcard *.ps) + +EXTRA_DIST_FILES = $(PS_FILES) + +INSTALLATION_DIR=$(datadir)/ps/ +INSTALLATION_FILES=$(PS_FILES) + +include $(depth)/make/stepmake.make +include $(stepdir)/installfiles.make + diff --git a/stepmake/configure b/stepmake/configure index 8e5937ac35..13f46dff90 100755 --- a/stepmake/configure +++ b/stepmake/configure @@ -1029,6 +1029,7 @@ echo "configure:1008: checking language" >&5 # AC_STEPMAKE_MAN # AC_STEPMAKE_MSGFMT # AC_STEPMAKE_TEXMF +# AC_STEPMAKE_TEXMF_DIRS if test "x$YODL" = "x"; then for ac_prog in striproff @@ -1036,7 +1037,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1040: checking for $ac_word" >&5 +echo "configure:1041: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1070,7 +1071,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1074: checking for $ac_word" >&5 +echo "configure:1075: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1104,7 +1105,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1108: checking for $ac_word" >&5 +echo "configure:1109: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1138,7 +1139,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1142: checking for $ac_word" >&5 +echo "configure:1143: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1171,7 +1172,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1175: checking for $ac_word" >&5 +echo "configure:1176: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1205,7 +1206,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1209: checking for $ac_word" >&5 +echo "configure:1210: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1239,7 +1240,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1243: checking for $ac_word" >&5 +echo "configure:1244: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1273,7 +1274,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1277: checking for $ac_word" >&5 +echo "configure:1278: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1329,7 +1330,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1333: checking for $ac_word" >&5 +echo "configure:1334: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm index ee26dee12a..c5f611a824 100644 --- a/stepmake/make/out/stepmake.lsm +++ b/stepmake/make/out/stepmake.lsm @@ -1,7 +1,7 @@ Begin3 Title: StepMake Version: 0.1.56 -Entered-date: 09OCT98 +Entered-date: 14OCT98 Description: Keywords: music notation typesetting midi fonts engraving Author: janneke@gnu.org (Jan Nieuwenhuizen) diff --git a/stepmake/stepmake/tex-rules.make b/stepmake/stepmake/tex-rules.make index 7b0b9820db..fa98675682 100644 --- a/stepmake/stepmake/tex-rules.make +++ b/stepmake/stepmake/tex-rules.make @@ -6,9 +6,9 @@ $(outdir)/%.dvi: $(outdir)/%.tex $(outdir)/%.dvi: $(outdir)/%.latex (cd $(outdir)&& \ latex \\nonstopmode \\input $(<F)&&\ - (bibtex $(basename $(<F))&&\ + (bibtex $(basename $(<F) || true)&&\ latex \\nonstopmode \\input $(<F)&&\ - latex \\nonstopmode \\input $(<F) ) || true) + latex \\nonstopmode \\input $(<F) )) $(outdir)/%.ps: $(outdir)/%.dvi dvips -ta4 -o $@ $< |