From 34f168ae4ed3379964f4009e4a823a7114dcb71a Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 4 Jun 1999 12:54:36 +0200 Subject: [PATCH] release: 1.1.46 --- Documentation/tex/computer-notation.bib | 2 +- Documentation/tex/glossary-table.data | 114 +++++++++++----------- NEWS | 17 +++- TODO | 37 ++++++- VERSION | 2 +- input/test/auto-beam-4-8.ly | 25 +++++ lily/align-element.cc | 3 +- lily/audio-item-info.cc | 26 +++++ lily/auto-beam-engraver.cc | 9 +- lily/bar-script-engraver.cc | 4 +- lily/base-span-bar-engraver.cc | 2 +- lily/break-align-item.cc | 55 ++++++++++- lily/engraver-group.cc | 9 +- lily/engraver.cc | 3 +- lily/include/align-element.hh | 2 +- lily/include/audio-element-info.hh | 29 ++++++ lily/include/engraver-group.hh | 2 - lily/include/lily-guile.hh | 5 +- lily/include/lily-proto.hh | 1 + lily/include/ly-symbols.hh | 1 + lily/include/performer-group-performer.hh | 6 +- lily/include/performer.hh | 8 +- lily/include/score-element-info.hh | 3 +- lily/include/translator-group.hh | 3 - lily/key-item.cc | 8 -- lily/lily-guile.cc | 23 +++++ lily/main.cc | 2 +- lily/performer-group-performer.cc | 50 ++++++++++ lily/performer.cc | 21 +++- lily/rest-engraver.cc | 2 +- lily/score-element.cc | 2 + lily/score-engraver.cc | 2 +- lily/score-performer.cc | 1 + lily/staff-margin-engraver.cc | 2 +- lily/tuplet-spanner.cc | 11 ++- lily/vertical-align-engraver.cc | 6 +- ly/auto-beam-settings.ly | 61 +++++++++++- ly/engraver.ly | 2 +- make/lilypond.spec.in | 9 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 13 ++- make/toplevel.make.in | 2 +- mf/feta-generic.mf | 5 +- mf/feta-klef.mf | 4 +- mf/feta-test13.mf | 21 ++++ mutopia/gallina.ly | 2 +- ps/lily.ps | 8 +- scm/lily.scm | 33 ++++++- scripts/abc-2-ly.py | 100 ++++++++++++++++--- stepmake/stepmake/c++-vars.make | 2 +- 51 files changed, 606 insertions(+), 170 deletions(-) create mode 100644 input/test/auto-beam-4-8.ly create mode 100644 lily/audio-item-info.cc create mode 100644 lily/include/audio-element-info.hh create mode 100644 mf/feta-test13.mf diff --git a/Documentation/tex/computer-notation.bib b/Documentation/tex/computer-notation.bib index 301d3e1a52..dc91216269 100644 --- a/Documentation/tex/computer-notation.bib +++ b/Documentation/tex/computer-notation.bib @@ -6,7 +6,7 @@ @String{CitH = {Computing and the Humanities}} @String{CMJ = {Computer Music Journal}} -@TechReport{roush88, +@TechRep=ort{roush88, note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN}, year = {1988}, title = {Music Formatting Guidelines}, diff --git a/Documentation/tex/glossary-table.data b/Documentation/tex/glossary-table.data index 978e5bf216..4a830e0d5d 100644 --- a/Documentation/tex/glossary-table.data +++ b/Documentation/tex/glossary-table.data @@ -1,22 +1,22 @@ @comma enharmonique@@@@@ @doigté de pédale@@@@@ -@doigté@@@@@ +@doigté@Fingersatz@@@@ @indication de pédale@@@@@ @pointillés@@@@@ -A@la@@@@@ +A@la@a@@@@ accent@accent@Akzent@@accent@accento@ -accidental@altération accidentelle@Vorzeichen@@toevallig teken@accidento@ +accidental@altération accidentelle@Vorzeichen, Versetzungszeichen, Akzidenz@@toevallig teken@accidento@ adjacent keys@tons voisins@@@@@ alto@alto@Alt@@alt@@ ancient form??? (diatonic minor scale)@forme du mode mineur ancien@@@@@ appoggiatura@appogiature, ports de voix, notes d'agrèment@langer Vorschlag@@lange voorslag@appogiature@ arbitrary number of bars' rest)@bâton de pause@@@meermaats rust@@ -arpeggio@arpège, arpègement@Brechungen@@gebroken akoord@arpeggio@ +arpeggio@arpège, arpègement@Arpeggio, Brechungen@@gebroken akoord@arpeggio@ artificial measure@mesure artificielle@@@@@ artificial rest@respiration@@@@@ ascending interval@intervalle ascendant@@@stijgend interval@@ -augmented (interval)@augmenté (intervalle)@@@overmatig interval@@ -B@si@@@@@ +augmented (interval)@augmenté (intervalle)@übermäßig (Intervall)@@overmatig interval@@ +B@si@h@@@@ backfall, forefall@accent, chute, port de voix@Vorschlag@@korte voorslag@appogiature@ bar line@barre (de mesure)@Taktstrich@@maatstreep@stanghetta@ bar; measure@mesure@Takt@@maat, maatstreep@@ @@ -28,11 +28,11 @@ beat@temps@Takt(-schlag)@@tel@@ brace@accolade@Klammer@@accolade, haak@accolada@Symbol at the start of a system that connects staffs. brass@@Blechbläser@@koper (blazers)@@ C clef@clé d'ut@Altschlüssel, C-Schlüssel@@C sleutel, alt sleutel@chiave di tenore@ -C@do@@@C@@ -C@ut@@@@@ +C@do@c@@C@@ +C@ut@c@@@@ cadence@cadence@Kadenz@@cadens@@ -cadenza@fioriture@@@cadens@cadenza@ -cent@@@@cent@@1/1200 of an octave (1/100 of an equally tempered semitone) +cadenza@fioriture@Kadenz@@cadens@cadenza@ +cent@@Cent@@cent@@1/1200 of an octave (1/100 of an equally tempered semitone) chain of trills@chaîne de trilles@@@triller@@ character@caractère@@@@@ chevron@chevron@@@@@ @@ -52,9 +52,9 @@ contralto@contralto@Alt(-stimme), alt-@@@@ contro-time@contre-temps@@@@@ crescendo@crescendo@Crescendo@@@crescendo@written with an extended opening angular bracket, indicates increasing volume cue-notes@@Stichnoten@@stichnoten@@In an orchestral part, notes for a different instrument that hint when to start playing. Usually printed in smaller type. -D@ré@@@@@ +D@ré@d@@@@ dash over/below@@@@@pizzicato@With plucked strings -decrescendo@@Decrecendo@@@decrescendo@written with an extended closing angular bracket, indicates decreasing volume +decrescendo@@Decrescendo@@@decrescendo@written with an extended closing angular bracket, indicates decreasing volume degree [of the scale]@degré [de la gamme]@Stufe [der Tonleiter]@@trap [van de toonladder]@@ descending interval@intervalle descendant@@@dalend interval@@ diatonic major scale@gamme diatonique majeure@Diatonische Durtonleiter@@diatonische majeur toonladder@@ @@ -62,51 +62,51 @@ diatonic minor scale@gamme diatonique mineure@Diatonische Molltonleiter@@@@ diatonic semitone@demi-ton diatonique@@@diatonische halve toon@@ diatonic type@genre diatonique@diatonisch@@@@ diatonic@diatonique@@@diatonisch@@A diatonic scale is a scale consisting of whole and half tones. -diminished (interval)@diminué (intervalle)@vermindertes (Intervall)@@verminderd (interval)@@ +diminished (interval)@diminué (intervalle)@vermindert (Intervall)@@verminderd (interval)@@ disjunct movement@mouvement disjoint@@@@@ dissonant interval; dissonance@dissonance@Dissonanz@@dissonant interval; dissonant@@ dominant ninth chord@accord de neuvième dominante@@@dominant noon akkoord@@ dominant seventh chord@accord de septième dominante@Dominantseptakkord@@dominant septiem akkoord@@ dominant@dominante@Dominante@@dominant@@A tone that creates tension;the fifth degree of the scale. dorian mode@@Dorische Tonart@@dorische toonladder@@Mode obtained by raising the sixth in minor mode. A Dorian scale can be played from D to D with no sharps or flats. -dot (augmentation dot) @point@Punkt@@punt@punto@An augmentation dot after note adds multiplies the duration by one and a half. +dot (augmentation dot) @point@Punkt (Verlängerungspunkt)@@punt@punto@An augmentation dot after note adds multiplies the duration by one and a half. dot and curved line combined@point et liaison combinés@@@@@ dot over/below@@Staccato@@staccato@staccato@Play each note short. dot@point@Punkt@@punt@@ dotted note@note pointée@punktierte Note@@@@ double appoggiatura@appogiature double@@@@@ -double bar line@double barre@Doppeltaktstrich@@dubbele streep@doppia barra@Indicates the end of a section within a movement. +double bar line@double barre@Doppel(takt)strich@@dubbele streep@doppia barra@Indicates the end of a section within a movement. double dotted note@note doublement pointée@doppel-punktierte Note@@@@ double flat@double bémol@Doppel-Be@@dubbelmol@doppio bemolle@ double sharp@double dièse@Doppelkreuz@@dubbelkruis@doppio diesis@Raise pitch by two semitones -double trill@trille double@@@@@A trill on a chord +double trill@trille double@Doppeltriller@@@@A trill on a chord double triplet@double triolet@Doppeltriole@@dubbele triool@@ -double whole note@@@breve@brevis@breve@Note during twice as long as a whole note. Mainly used in pre-1650 music. +double whole note@@Brevis@breve@brevis@breve@Note during twice as long as a whole note. Mainly used in pre-1650 music. duple meter@temps binaire@@@tweedelige maatsoort@@ -duplet@duolet@@@duool@@ +duplet@duolet@Duole@@duool@@ duration@durée@Dauer, Länge@@duur, lengte@@ -E@mi@@@@@ -eighth note@croche@achtel Note@quaver@achtste noot@@ -eighth rest@demi-soupir@achtel Pause@quaver rest@achtste rust@@ +E@mi@e@@@@ +eighth note@croche@Achtelnote@quaver@achtste noot@@ +eighth rest@demi-soupir@Achtelpause@quaver rest@achtste rust@@ engraving@@Notenstechen@@steken@@The traditional process of music printing: cutting in a plate of metal. Now also the term for the art of music typography. -enharmonic@enharmonique@Enharmonisch@@enharmonisch@@Two notes, intervals, or scales are enharmonic if they have different names but sound the same. Examples: C sharp and D flat, diminished fourth and major third +enharmonic@enharmonique@enharmonisch@@enharmonisch@@Two notes, intervals, or scales are enharmonic if they have different names but sound the same. Examples: C sharp and D flat, diminished fourth and major third equal temperament@tempérament égal@@@getempereerde stemming@@Tuning system in which each semitone is precisely 100 cents. essential alteration@altération essentielle@@@@@ expression mark@signe d'expressoin@Vortragszeichen@@voordrachtsteken@segno d'espressione@ extension of interval@extension d'intervalle@@@@@ -F@fa@@@@@ +F@fa@f@@@@ fermata@pauses@Fermate@@fermate@fermata@Prolonged sound or silence of indefinite duration fifth@quinte@Quinte@@kwint@@ -flag, hook, tail, pennant@crochet@Fänchen@@vlaggetje@coda uncinata@Ornament at the end of the stem of a note. The number of flags determines the lengths of notes shorter than a quarter note. +flag, hook, tail, pennant@crochet@Fähnchen@@vlaggetje@coda uncinata@Ornament at the end of the stem of a note. The number of flags determines the lengths of notes shorter than a quarter note. flat@bémol@Be@@mol@bemolle@Lower pitch by a semitone four-bar rest@bâton de pause@@@@@ fourth@quarte@Quarte@@kwart@@ -G@sol@@@@@ +G@sol@g@@@@ glissando@glissement@Glissando@@glissando@glissando@Letting the pitch slide fluently from one note to the other graces@petites notes@Verzierungen, Manieren@@versieringen@appogiature@ -grand staff@@Klavieraszug@@piano systeem@@A combination of two staffs with a brace. Usually used for piano music. -half note@blanche@halbe Note@minim@halve noot@@ -half rest@demi-pause@halbe Pause@minim rest@halve rust@@ +grand staff@@@@piano systeem@@A combination of two staffs with a brace. Usually used for piano music. +half note@blanche@Halbe Note@minim@halve noot@@ +half rest@demi-pause@Halbe Pause@minim rest@halve rust@@ harmonic cadence@cadence harmonique@@@harmonische cadens@@Sequence of chords that terminate a musical phrase or section. harmonic form (diatonic minor scale)@forme harmonique@@@@@ harmonic interval@intervalle harmonique@Harmonisches Intervall@@@@ @@ -128,21 +128,21 @@ lilypond@ line@ligne@Linie@@lijn@@ long appoggiatura@appogiature longue@@@@@ lower number@chiffre inférieur@@@@@ -major (interval)@majeur (intervalle)@@@groot (interval)@@ -major mode@mode majeur@@@@@ +major (interval)@majeur (intervalle)@groß (Intervall)@@groot (interval)@@ +major mode@mode majeur@Dur@@@@ meantone temperament@tempérament mésotonique@@@@@Tuning based on a fifth that is 16 cents smaller than the natural fifth. mediant@médiante@@@mediant@@The third degree of a scale melodic cadence@cadence mélodique@@@cadens@@A free-form section at the end of a solo-concerto, where the soloist can demonstrate his/her virtuosity. melodic form (diatonic minor scale)@forme mélodique@@@@@ meter, time@mètre@Takt, Metrum@@maatsoort@@A recurring pattern of stress metronome@métronome@Metronom@@metronoom@@Device which sounds a steady beat -metronomic indication@indication métronomique@@@@@Exact tempo indication (in beats per minute). Also denoted by M.M. (Mäzlel's Metronom) +metronomic indication@indication métronomique@Metronomangabe@@@@Exact tempo indication (in beats per minute). Also denoted by M.M. (Mälzel's Metronom) mezzo-soprano@mezzo-soprano@Mezzosopran@@@@ -middle C@do central@@@centrale C@@First C below the 440 Hz A. -minor (interval)@mineur (intervalle)@@@@@ -minor mode@mode mineur@@@@@ +middle C@do central@eingestrichenes c@@centrale C@@First C below the 440 Hz A. +minor (interval)@mineur (intervalle)@klein (Intervall)@@@@ +minor mode@mode mineur@Moll@@@@ modal note@note modale@@@@@ -mode@mode@@@@@ +mode@mode@Geschlecht@@@@ modulation@modulation@Modulation@@modulatie@@ mordent@mordant, pincè@Pralltriller, Mordent@@mordent@mordente@ motive@incise@Motiv@@motief@@ @@ -160,7 +160,7 @@ ornament, embellishment; accessory@agr part@@@@partij@@ pause@pause@Luftpause@@@@ pause@point d'orgue@@@@@ -perfect (interval)@juste (intervalle)@reines (Intervall)@@rein (interval)@@ +perfect (interval)@juste (intervalle)@rein (Intervall)@@rein (interval)@@ perfect major chord@accord parfait majeur@@@@@ perfect minor chord@accord parfait mineur@@@@@ phrase member@membre de phrase@@@@@ @@ -168,10 +168,10 @@ phrase@phrase@Phrase@@frase, zin@@ phrasing@phrasé@@@@@ pitch pipe; tuning fork@diapason@Stimmgabel@@stemfluitje; stemvork@@ pitch@hauteur@Tonhöhe@@toonhoogte@@ -Pythagorean comma@comma pythagoricien@@@komma van Pythagoras@@A sequence of fifths starting on C eventually circles back to C (B sharp), but this B sharp is 24 cents higher than C. This gap is the Pythagorean comma. +Pythagorean comma@comma pythagoricien@Pythagoräisches Komma@@komma van Pythagoras@@A sequence of fifths starting on C eventually circles back to C (B sharp), but this B sharp is 24 cents higher than C. This gap is the Pythagorean comma. quadruplet@quartolet@@@kwartool@@ -quarter note@noire@viertel Note@crotchet@kwartnoot@@ -quarter rest@soupir@viertel Pause@crotchet rest@kwart rust@@ +quarter note@noire@Viertelnote@crotchet@kwartnoot@@ +quarter rest@soupir@Viertelpause@crotchet rest@kwart rust@@ register@registre@Register@@register@@ regular contro-time@contre-temps régulier@@@@@ regular syncopation@syncope régulière@@@@@ @@ -187,7 +187,7 @@ score@partition@Partitur@@partituur@@ second@seconde@Sekunde@@@secunde@ semitone@demi-ton@Halbton@@halve toon@@ seventh@septième@Septime@@septiem@septime@ -sextuplet@sextolet@@@sextool@@ +sextuplet@sextolet@Sextole@@sextool@@ sextuplet@sixain@@@sextool@@ shading signs@signes indicateurs de nuance@@@@@ shading@nuance@Nuance@@@@ @@ -196,12 +196,12 @@ short appoggiatura@appogiature br simple appoggiatura@appogiature simple@@@@@ simple interval@intervalle simple@@@@@ simple measure@mesure simple@@@@@ -sixteenth note@double croche@sechzehntel Note@semiquaver@zestiende noot@@ -sixteenth rest@quart de soupir@sechzehntel Pause@semiquaver rest@zestiende rust@@ +sixteenth note@double croche@Sechzehntelnote@semiquaver@zestiende noot@@ +sixteenth rest@quart de soupir@Sechzehntelpause@semiquaver rest@zestiende rust@@ sixth@sixte@Sexte@@sext@@ -sixty-fourth note@quadruple croche@vierundsechzigstel Note@hemidemisemiquaver@vierenzestigste noot@@ -sixty-fourth rest@seizième de soupir@vierundsechzigstel Pause@hemidemisemiquaver rest@@@ -slur@liason, coulé@Bindungzeichen, Bindebogen@@binding, bindingsboog@legatura@ +sixty-fourth note@quadruple croche@Vierundsechzigstelnote@hemidemisemiquaver@vierenzestigste noot@@ +sixty-fourth rest@seizième de soupir@Vierundsechzigstelpause@hemidemisemiquaver rest@@@ +slur@liaison, coulé@Bindungszeichen, Bindebogen@@binding, bindingsboog@legatura@ soprano@soprano@Sopran@@sopraan@@ space@espace@@@@@ staff@portée@Noten(linien)system@@(noten)balk; partij@@pl staves or staffs @@ -213,40 +213,40 @@ submediant@@@@@@The sixth scale degree subtonic@sous-tonique@Subtonika@@@@The seventh degree of the scale superdominant@sus-dominante@@@@@The sixth scale degree supertonic@sus-tonique@@@@@The second scale degree -syncopation; upbeat@syncope@@@syncope@@ +syncopation; upbeat@syncope@Synkope@@syncope@@ syntonic comma@comma syntonique@@@komma van Didymos, syntonische komma@@Difference between the natural third and the third obtained by Pythagorean tuning, euqal to 22 cents. system@système@System@@systeem@sitema@ tempo indication@signes de temps@Zeitmaß, Tempobezeichnung@@tempo aanduiding@segno di tempo@ tempo; movement@mouvement@Tempo@@@@ tenor@ténor@Tenor@@@@ tenth@@Dezime@@deciem@decime@ -tetrachord@tétracorde@Dreiklang@@@@ +tetrachord@tétracorde@Vierklang@@@@ third@tierce@Terz@@terts@@ -thirty-second note@triple croche@zweiunddreißigstel Note@demisemiquaver@32e noot@@ -thirty-second rest@huitième de soupir@zweiunddreißigstel Pause@demisemiquaver rest@32e rust@@ -tie@liaison@Bindung@@overbinding@legatura@A curve that shows the prolongation (as opposed to the repetition fo a note) +thirty-second note@triple croche@Zweiunddreißigstelnote@demisemiquaver@32e noot@@ +thirty-second rest@huitième de soupir@Zweiunddreißigstelpause@demisemiquaver rest@32e rust@@ +tie@liaison@Haltebogen@@overbinding@legatura@A curve that shows the prolongation (as opposed to the repetition fo a note) time signature@chiffrage (chiffres indicateurs), signe de valeur@Taktvorzeichnung, Taktvorzeichen@@maatsoort@segni di tempo@ tonal note@note tonale@@@@@ -tonality@tonalité@@@tonaliteit@@ +tonality@tonalité@Tonalität@@tonaliteit@@ tone@ton@Ton@@toon@@ -tonic@tonique@@@tonica@@ +tonic@tonique@Tonika@@tonica@@ transposition@transposition@Transposition@@transpositie@@Shifting a melody up or down in pitch, while keeping the same relative pitches. treble clef@clé de sol@Violinschlüssel, G-Schlüssel@@G sleutel, viool sleutel@chiave di violino@ tremolo@trèmolo@Tremolo@@tremolo@tremolo@ trill; shake@trille, tremblement, battement (cadence)@Triller@@triller@trillo@ triple meter@temps ternaire@@@driedelige maatsoort@@ triplet@triolet@Triole@@@@ -tritone@triton@@@@@ +tritone@triton@Tritonus@@@@ turn; gruppetto@brisè, groupe, doublè, grupetto@Doppelschlag@@dubbelslag@grupetto@ two-bar rest@bâton de pause@@@@@ -underline over/below@portamento@@@@@ -unison@unisson@@@@unisono@Different instruments playing exactly the same melody. +underline over/below@portamento@Portato@@@@ +unison@unisson@Unisono@@@unisono@Different instruments playing exactly the same melody. unit of beat@unité de temps@@@@@ unit of measure@unité de mesure@@@@@ upbeat, arsis@@Auftakt@@@@ upper number@chiffre supérieur@@@@@ voice@voix@Stimme@@stem@@ weak beat@temps faible@@@arsis@@ -whole note@ronde@ganze Note@semibreve@hele noot@@ -whole rest@pause@ganze Pause@semibreve rest@@@ +whole note@ronde@Ganze Note@semibreve@hele noot@@ +whole rest@pause@Ganze Pause@semibreve rest@@@ woodwind@@Holzbläser@@houtblazers@@ diff --git a/NEWS b/NEWS index 7f62b95684..4b1694fbf5 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,20 @@ -pl 45 (may 28) +pl 45.hwn1 + - Audio broadcast & acknowledge. + - more advanced spacing for prefatory matter + - tuplet appearance tweaking + + +pl 45.uu1 + - glossary fixes (thanks Dirk). + +pl 44.jcn2 + - bf: auto-beamer: long standing br form AM + +********* + +pl 45 (may 28) + - reinstalled Thread (there you are, John) - german vocab. diff --git a/TODO b/TODO index 4107485454..5079798708 100644 --- a/TODO +++ b/TODO @@ -10,10 +10,45 @@ Grep for TODO and ugh/ugr/urg. .* BUGS . * junk separate mudela versioning. +. * petite-ouverture time sig size. . * PostScript . * header for PS enteredby = "bla " . * ps/lily.ps see comments. -. * down tuplet spanner. +. * By the way, I'm not sure the translation of 'C, G, and F clef' +> should include Alto, Violin, Bass . +[..] + +I understand your point. It should be changed. + + +> +> The terms C-clef, G-clef, F-clef stand for the signs, being +> mutated forms of a C, a G and an F. +> +> The terms Violin Clef etc. stand for the signs being used in +> special positions on the staff. +> +> The G-clef-sign indicates g' on the line around which the +> snake centers. It is a Violin Clef if it is centered around the +> second line (from below), and a French Violin Clef if it is +> centered around the lowest. +> +> The C-clef indicates c' on the line that gets +> 'pinched' by it. It is a Soprano, Mezzosoprano (English?), Alto, Tenor +> and (don't remember exactly, maybe Baritone) Clef, depending on +> the line (from highest to lowest). +> +> The F-clef-sign indicates f on the line between +> the two dots. If it's on the second line from above, it is called +> Bass Clef. If it's on the middle line, it is called (maybe +> Baritone) Clef too, because it indicates the same pitches as the +> C-Clef on the highest line. So, you could write an Alto Clef by +> putting the F-clef sign on the lowest line (but that's _very_ +> uncommon). +> +> Sorry, this is written very messy because I'm in a hurry, +> but I hope you understand what I want to say. +> . * didot / big point. . * devise standard for functioning of Vertical_align_element. . * midi key. diff --git a/VERSION b/VERSION index 22250ed8d2..624ee8e3b1 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=45 +PATCH_LEVEL=46 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/input/test/auto-beam-4-8.ly b/input/test/auto-beam-4-8.ly new file mode 100644 index 0000000000..c10e2464d1 --- /dev/null +++ b/input/test/auto-beam-4-8.ly @@ -0,0 +1,25 @@ +\score{ + \notes\relative c''{ + \time 4/8; + +%{ + the default for 4/8 (see ly/auto-beam-settings.ly) + ---- -------- + | | | |--| + x| x| x| x| x| +%} + c8 c c c16 c + + +%{ + user override + -------------- + | | | |--| + x| x| x| x| x| +%} + \property Voice.beamAutoEnd = "2/4" + c8 c c c16 c + + } +} + diff --git a/lily/align-element.cc b/lily/align-element.cc index 0e0b5a5605..56011a3fe1 100644 --- a/lily/align-element.cc +++ b/lily/align-element.cc @@ -86,7 +86,6 @@ Align_element::do_pre_processing () void Align_element::do_side_processing () { - sort_elements (); Array dims; Link_array elems; @@ -103,7 +102,7 @@ Align_element::do_side_processing () { extra_dims = SCM_CDR (extra_dims); dims.top ()[LEFT] -= gh_scm2double (SCM_CAR (extra_dims)); - dims.top ()[RIGHT] += gh_scm2double (SCM_CAR (extra_dims)); + dims.top ()[RIGHT] += gh_scm2double (SCM_CDR (extra_dims)); } elems.push (e); diff --git a/lily/audio-item-info.cc b/lily/audio-item-info.cc new file mode 100644 index 0000000000..6ca17ecadf --- /dev/null +++ b/lily/audio-item-info.cc @@ -0,0 +1,26 @@ +/* + Audio-element-info.cc -- implement Audio_element_info + + source file of the GNU LilyPond music typesetter + + (c) 1997--1999 Han-Wen Nienhuys +*/ + +#include "audio-element-info.hh" +#include "request.hh" + +Audio_element_info::Audio_element_info (Audio_element*s_l, Music *r_l) +{ + elem_l_ = s_l; + req_l_ = r_l; +} + + +Audio_element_info::Audio_element_info() +{ + elem_l_ = 0; + req_l_ = 0; +} + + + diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 3a74ab95cb..4e383675d7 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -22,7 +22,8 @@ ADD_THIS_TRANSLATOR (Auto_beam_engraver); Auto_beam_engraver::Auto_beam_engraver () { stem_l_arr_p_ = 0; - shortest_mom_ = 1; + //shortest_mom_ = 1; + shortest_mom_ = Moment (1, 8); finished_beam_p_ = 0; finished_grouping_p_ = 0; grouping_p_ = 0; @@ -197,7 +198,8 @@ Auto_beam_engraver::end_beam () delete stem_l_arr_p_; stem_l_arr_p_ = 0; grouping_p_ = 0; - shortest_mom_ = 1; + //shortest_mom_ = 1; + shortest_mom_ = Moment (1, 8); } } @@ -329,7 +331,8 @@ Auto_beam_engraver::junk_beam () stem_l_arr_p_ = 0; delete grouping_p_; grouping_p_ = 0; - shortest_mom_ = 1; + //shortest_mom_ = 1; + shortest_mom_ = Moment (1, 8); } void diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index a7f59dea8e..2e5a2eb8e1 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -93,7 +93,7 @@ Bar_script_engraver::cast_to_interesting_item (Score_element *e) void Bar_script_engraver::acknowledge_element (Score_element_info inf) { - if (inf.origin_grav_l_arr_.size () == 1) + if (inf.origin_trans_l_arr_.size () == 1) { Item *i=cast_to_interesting_item (inf.elem_l_); if (!i) @@ -102,7 +102,7 @@ Bar_script_engraver::acknowledge_element (Score_element_info inf) /* Only put numbers on bars that are at our own level (don't put numbers over the staffs of a GrandStaff, only over the GrandStaff itself */ - if (inf.origin_grav_l_arr_.size () != 1) + if (inf.origin_trans_l_arr_.size () != 1) return; do_acknowledge_element (i); diff --git a/lily/base-span-bar-engraver.cc b/lily/base-span-bar-engraver.cc index 1616106156..e28362da15 100644 --- a/lily/base-span-bar-engraver.cc +++ b/lily/base-span-bar-engraver.cc @@ -28,7 +28,7 @@ Base_span_bar_engraver::get_span_bar_p() const void Base_span_bar_engraver::acknowledge_element (Score_element_info i) { - int depth = i.origin_grav_l_arr_.size(); + int depth = i.origin_trans_l_arr_.size(); if (depth > 1 && dynamic_cast (i.elem_l_)) { diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index ab9c805824..e8e314a567 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -6,15 +6,63 @@ (c) 1997--1999 Han-Wen Nienhuys */ +#include "lily-guile.hh" #include "break-align-item.hh" #include "dimensions.hh" #include "p-score.hh" +#include "paper-def.hh" void Break_align_item::do_pre_processing() { align_dir_ = break_status_dir(); flip (&align_dir_); + sort_elements (); + + + Link_array elems; + for (int i=0; i < elem_l_arr_.size(); i++) + { + Interval y = elem_l_arr_[i]->extent(axis ()); + if (!y.empty_b()) + elems.push (dynamic_cast (elem_l_arr_[i])); + } + + + if (elems.size ()) + { + Score_element *current_elt =elems[0]; + SCM current_origin = current_elt->get_elt_property (origin_scm_sym); + + if (current_origin != SCM_BOOL_F) + current_origin = SCM_CDR (current_origin); + + for (int i=1; i < elems.size (); i++) + { + Score_element *next_elt = elems[i]; + SCM next_origin = next_elt->get_elt_property (origin_scm_sym); + if (next_origin != SCM_BOOL_F) + { + next_origin = SCM_CDR(next_origin); + SCM extra_space = scm_eval (scm_listify (ly_symbol ("break-align-spacer"), + current_origin, + next_origin, + SCM_UNDEFINED)); + + + Real spc = gh_scm2double (extra_space); + spc *= paper_l ()->get_realvar (interline_scm_sym); + + current_elt->set_elt_property (extra_space_scm_sym, + scm_cons (gh_double2scm (0.0), + gh_double2scm (spc))); + + } + current_elt = next_elt; + current_origin = next_origin; + } + + } Axis_align_item::do_pre_processing(); } @@ -54,8 +102,7 @@ Break_align_item::add_breakable_item (Item *it) warning bells about missing Y refpoints go off later on. */ hg->dim_cache_[Y_AXIS]->parent_l_ = dim_cache_[Y_AXIS]; - hg->set_elt_property (ly_symbol("origin"), - SCM_EOL); + hg->set_elt_property (ly_symbol("origin"), gh_str02scm (it->name())); pscore_l_->typeset_element (hg); add_element_priority (hg, priority); @@ -63,10 +110,12 @@ Break_align_item::add_breakable_item (Item *it) if (priority == 0) center_l_ = hg; } - + + /* hg->set_elt_property (ly_symbol("origin"), scm_cons (gh_str02scm (it->name()), hg->get_elt_property (ly_symbol ("origin")))); + */ hg->add_element (it); diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index 104793dca4..5c35cd74e8 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -50,7 +50,7 @@ Engraver_group_engraver::do_announces() for (int i=0; i < nongroups.size(); i++) { // Is this good enough? Engraver * eng = dynamic_cast (nongroups[i]); - if (eng && eng!= info.origin_grav_l_arr_[0]) + if (eng && eng!= info.origin_trans_l_arr_[0]) eng->acknowledge_element (info); } } @@ -83,10 +83,3 @@ Engraver_group_engraver::get_staff_info() const -Engraver_group_engraver::~Engraver_group_engraver () -{ -} - -Engraver_group_engraver::Engraver_group_engraver () -{ -} diff --git a/lily/engraver.cc b/lily/engraver.cc index fde31b7593..a94d69eedb 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -19,11 +19,10 @@ Engraver::fill_staff_info (Staff_info&) } - void Engraver::announce_element (Score_element_info i) { - i.origin_grav_l_arr_.push (this); + i.origin_trans_l_arr_.push (this); daddy_grav_l()->announce_element (i); } diff --git a/lily/include/align-element.hh b/lily/include/align-element.hh index edc88cab90..6c5689b934 100644 --- a/lily/include/align-element.hh +++ b/lily/include/align-element.hh @@ -25,7 +25,6 @@ */ class Align_element : public virtual Axis_group_element { Hash_table priority_i_hash_; - void sort_elements (); public: Interval threshold_interval_ ; @@ -56,6 +55,7 @@ public: Score_element *get_elt_by_priority (int) const; int get_priority (Score_element*) const; protected: + void sort_elements (); virtual void do_print() const; virtual void do_substitute_element_pointer (Score_element*,Score_element*); virtual void do_post_processing() ; diff --git a/lily/include/audio-element-info.hh b/lily/include/audio-element-info.hh new file mode 100644 index 0000000000..293fff867b --- /dev/null +++ b/lily/include/audio-element-info.hh @@ -0,0 +1,29 @@ +/* + audio-item-info.hh -- declare Audio_item_info + + source file of the GNU LilyPond music typesetter + + (c) 1999 Han-Wen Nienhuys + + */ + +#ifndef AUDIO_ITEM_INFO_HH +#define AUDIO_ITEM_INFO_HH + +#include "lily-proto.hh" +#include "parray.hh" + +/** + Data container for broadcasts + */ +struct Audio_element_info { + Audio_element * elem_l_; + Music *req_l_; + Link_array origin_trans_l_arr_; + + Audio_element_info (Audio_element*, Music*); + Audio_element_info(); +}; + + +#endif diff --git a/lily/include/engraver-group.hh b/lily/include/engraver-group.hh index ec32684831..fdebf2a0cb 100644 --- a/lily/include/engraver-group.hh +++ b/lily/include/engraver-group.hh @@ -28,8 +28,6 @@ protected: Array announce_info_arr_; public: VIRTUAL_COPY_CONS(Translator); - Engraver_group_engraver(); - ~Engraver_group_engraver(); virtual Staff_info get_staff_info() const; virtual void do_announces(); diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index b7eea3d2f5..395b277dd9 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -34,11 +34,12 @@ SCM array_to_list (SCM *a , int l); void read_lily_scm_file (String); -void init_symbols (); +void init_lily_guile (); + #include "ly-symbols.hh" /* - DIY gc protection. + Do It Yourself GC protection. */ SCM ly_protect_scm (SCM s); SCM ly_unprotect_scm (SCM s); diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index d573c8fdcf..3647c56a26 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -22,6 +22,7 @@ struct All_font_metrics; struct Articulation_req; struct Atom; struct Audio_element; +struct Audio_element_info; struct Audio_column; struct Audio_item; struct Audio_key; diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh index dc99b23c71..18135bbf89 100644 --- a/lily/include/ly-symbols.hh +++ b/lily/include/ly-symbols.hh @@ -43,6 +43,7 @@ DECLARE_LY_SYMBOL(molecule); DECLARE_LY_SYMBOL(notewidth); DECLARE_LY_SYMBOL(non_default); DECLARE_LY_SYMBOL(octave_dir); +DECLARE_LY_SYMBOL(origin); DECLARE_LY_SYMBOL(output); DECLARE_LY_SYMBOL(padding); DECLARE_LY_SYMBOL(pianobrace); diff --git a/lily/include/performer-group-performer.hh b/lily/include/performer-group-performer.hh index b8c03cccef..16eb2e8ccb 100644 --- a/lily/include/performer-group-performer.hh +++ b/lily/include/performer-group-performer.hh @@ -20,7 +20,11 @@ class Performer_group_performer : public Performer, public virtual Translator_group { public: VIRTUAL_COPY_CONS(Translator); - + + virtual void do_announces(); + virtual void announce_element (Audio_element_info); +protected: + Array announce_info_arr_; }; #endif // PERFORMER_GROUP_PERFORMER_HH diff --git a/lily/include/performer.hh b/lily/include/performer.hh index 92b2d77be0..03fea2f259 100644 --- a/lily/include/performer.hh +++ b/lily/include/performer.hh @@ -8,7 +8,7 @@ #ifndef PERFORMER_HH #define PERFORMER_HH -#include "lily-proto.hh" +#include "audio-element-info.hh" #include "array.hh" #include "request.hh" #include "score-element-info.hh" @@ -22,12 +22,16 @@ class Performer : public virtual Translator{ public: VIRTUAL_COPY_CONS(Translator); - + friend class Performer_group_performer; Performer_group_performer* daddy_perf_l() const; protected: + virtual void announce_element (Audio_element_info); + virtual void acknowledge_element (Audio_element_info); + virtual void process_acknowledged (); virtual int get_tempo_i() const; virtual void play (Audio_element * elem_p ); }; #endif // PERFORMER_HH + diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh index 1f22b63e46..b9cd13aa27 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/score-element-info.hh @@ -10,7 +10,6 @@ #ifndef STAFFELEMINFO_HH #define STAFFELEMINFO_HH -#include "scalar.hh" #include "lily-proto.hh" #include "parray.hh" @@ -20,7 +19,7 @@ struct Score_element_info { Score_element * elem_l_; Music *req_l_; - Link_array origin_grav_l_arr_; + Link_array origin_trans_l_arr_; Score_element_info (Score_element*, Music*); Score_element_info(); diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index bb9996fbd6..a34dc222b0 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -40,10 +40,8 @@ public: String id_str_; - VIRTUAL_COPY_CONS(Translator); - void set_acceptor (String accepts, bool add); void set_element (String elt, bool add); void add_last_element (String elt); @@ -67,7 +65,6 @@ public: void check_removal (); - Translator *get_simple_translator (String) const; Translator_group *find_existing_translator_l (String n, String id); Translator_group *find_create_translator_l (String n, String id); diff --git a/lily/key-item.cc b/lily/key-item.cc index a3b646b0e5..d11424b41e 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -126,14 +126,6 @@ Key_item::do_brew_molecule_p() const output->add_at_edge (X_AXIS, RIGHT, m, 0); } - if (pitch_arr_.size()) - { - Molecule m (lookup_l ()->fill (Box ( - Interval (0, paper_l ()->note_width ()), - Interval (0,0)))); - - output->add_at_edge (X_AXIS, RIGHT, m,0 ); - } return output; } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index bec431671e..46d5908d47 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -121,3 +121,26 @@ array_to_list (SCM *a , int l) return list; } +SCM +ly_warning (SCM str) +{ + assert (gh_string_p (str)); + warning ("scheme: " + ly_scm2string (str)); + return SCM_BOOL_T; +} + +void +init_functions () +{ + scm_make_gsubr ("ly-warn", 1, 0, 0, ly_warning); +} + + +extern void init_symbols (); + +void +init_lily_guile () +{ + init_symbols(); + init_functions (); +} diff --git a/lily/main.cc b/lily/main.cc index 947140abbe..b5f0c3170e 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -255,7 +255,7 @@ main_prog (int argc, char **argv) */ extern void ly_init_protection(); ly_init_protection(); - init_symbols (); + init_lily_guile (); read_lily_scm_file ( "lily.scm"); cout << endl; diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index a7d10c7c3a..c44d68ad7d 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -14,3 +14,53 @@ ADD_THIS_TRANSLATOR(Performer_group_performer); + +void +Performer_group_performer::announce_element (Audio_element_info info) +{ + announce_info_arr_.push (info); + Performer::announce_element (info); +} + +void +Performer_group_performer::do_announces() +{ + Link_array groups = group_l_arr (); + for (int i=0; i < groups.size(); i++) + { + Performer_group_performer * group = dynamic_cast (groups[i]); + if (group) + { + group->do_announces(); + } + } + + Request dummy_req; + + Link_array nongroups = nongroup_l_arr (); + while (announce_info_arr_.size ()) + { + for (int j =0; j < announce_info_arr_.size(); j++) + { + Audio_element_info info = announce_info_arr_[j]; + + if (!info.req_l_) + info.req_l_ = &dummy_req; + for (int i=0; i < nongroups.size(); i++) + { // Is this good enough? + Performer * eng = dynamic_cast (nongroups[i]); + if (eng && eng!= info.origin_trans_l_arr_[0]) + eng->acknowledge_element (info); + } + } + announce_info_arr_.clear (); + for (int i=0; i < nongroups.size(); i++) + { + Performer * eng = dynamic_cast (nongroups[i]); + if (eng) + eng->process_acknowledged (); + } + + } +} + diff --git a/lily/performer.cc b/lily/performer.cc index 82dce90299..62ac44481e 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -11,9 +11,6 @@ #include "performer-group-performer.hh" #include "debug.hh" - - - void Performer::play (Audio_element* p) { @@ -33,3 +30,21 @@ Performer::daddy_perf_l () const ?dynamic_cast (daddy_trans_l_) : 0; } + +void +Performer::acknowledge_element (Audio_element_info) +{ +} + +void +Performer::process_acknowledged () +{ +} + + +void +Performer::announce_element (Audio_element_info i) +{ + i.origin_trans_l_arr_.push (this); + daddy_perf_l()->announce_element (i); +} diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index 1e5aa7eed2..a8f601e9ee 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -60,7 +60,7 @@ Rest_engraver::do_process_requests () String reststyle = get_property ("restStyle", 0); if (reststyle.length_i ()) rest_p_->set_elt_property (style_scm_sym, - gh_str02scm (reststyle.ch_C())); + gh_str02scm (reststyle.ch_C())); } announce_element (Score_element_info (rest_p_, rest_req_l_)); } diff --git a/lily/score-element.cc b/lily/score-element.cc index 7be075b6ec..f77f9c9e8c 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -136,6 +136,8 @@ Score_element::print() const { #ifndef NPRINT DOUT << classname(this) << "{\n"; + if (check_debug && !monitor->silent_b ("Score_element")) + ly_display_scm (element_property_alist_); DOUT << "dependencies: " << dependency_size(); if (original_l_) DOUT << "Copy "; diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 8938ebd8fe..8cd17a52d8 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -82,7 +82,7 @@ void Score_engraver::announce_element (Score_element_info info) { announce_info_arr_.push (info); - info.origin_grav_l_arr_.push (this); + info.origin_trans_l_arr_.push (this); if (Spanner *s = dynamic_cast (info.elem_l_)) pscore_p_->typeset_unbroken_spanner (s); diff --git a/lily/score-performer.cc b/lily/score-performer.cc index 4729fc302e..3da26d540c 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -56,6 +56,7 @@ void Score_performer::process() { process_requests(); + do_announces (); pre_move_processing(); check_removal(); } diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 2d352365f6..11d66d7587 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -38,7 +38,7 @@ void Staff_margin_engraver::acknowledge_element (Score_element_info inf) { Item *i = cast_to_interesting_item (inf.elem_l_); - if (!i || inf.origin_grav_l_arr_.size() != 1) + if (!i || inf.origin_trans_l_arr_.size() != 1) return; diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index adcb935f25..9ff1e89bde 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -36,12 +36,14 @@ Tuplet_spanner::do_brew_molecule_p () const Molecule num (lookup_l ()->text ("italic", number_str_)); num.align_to (X_AXIS, CENTER); - num.translate_axis (dir_ * paper_l ()->get_realvar (interline_scm_sym), Y_AXIS); - + Real interline = paper_l ()->get_realvar (interline_scm_sym); + if (beam_l_arr_.size () == 1 && !bracket_visibility_b_) { Beam *beam_l = beam_l_arr_[0]; Directional_spanner* ds = dynamic_cast(beam_l); + + num.translate_axis (dir_ * interline, Y_AXIS); num.translate (ds->center ()); num.translate_axis (ncw, X_AXIS); } @@ -51,7 +53,9 @@ Tuplet_spanner::do_brew_molecule_p () const Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_] - column_arr_[0]->extent (Y_AXIS) [dir_]; Real w = extent (X_AXIS).length () + ncw; - // num.align_to (Y_AXIS, CENTER); + num.align_to (Y_AXIS, CENTER); + num.translate_axis (dir_ * interline, Y_AXIS); + num.translate (Offset (w/2, dy/2)); mol_p->add_molecule (lookup_l ()->plet (dy, w, dir_)); } @@ -60,6 +64,7 @@ Tuplet_spanner::do_brew_molecule_p () const { mol_p->add_molecule (num); } + mol_p->translate_axis (dir_ * interline, Y_AXIS); } return mol_p; } diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 891c1b98d1..7a21264159 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -58,8 +58,8 @@ Vertical_align_engraver::do_removal_processing() bool Vertical_align_engraver::qualifies_b (Score_element_info i) const { - Translator * t = i.origin_grav_l_arr_[0]; - int sz = i.origin_grav_l_arr_.size() ; + Translator * t = i.origin_trans_l_arr_[0]; + int sz = i.origin_trans_l_arr_.size() ; #if 0 return (sz == 1 && dynamic_cast (t)) @@ -78,7 +78,7 @@ Vertical_align_engraver::acknowledge_element (Score_element_info i) { valign_p_->add_element (i.elem_l_); } - else if (dynamic_cast(i.elem_l_) && i.origin_grav_l_arr_.size ()) + else if (dynamic_cast(i.elem_l_) && i.origin_trans_l_arr_.size ()) { i.elem_l_->add_dependency (valign_p_); } diff --git a/ly/auto-beam-settings.ly b/ly/auto-beam-settings.ly index b24a713d41..329da4ec89 100644 --- a/ly/auto-beam-settings.ly +++ b/ly/auto-beam-settings.ly @@ -1,31 +1,82 @@ +%%In the file ly/auto-beam-settings.ly, all necessary i-iii settings should +%%be listed, here's a new version with more comments, (hw, please include). +%%duh + +% auto-beam-settings.ly +% setup for auto-beam engraver % -% setup for auto beamer -% +% specify generic beam end times -% *num_den (omitted if "1") +% format: +% +% [time-signature]'beamAutoEnd'[duration] +% +% where +% +% time-signature = 'time'[numerator]'_'denominator; eg: 3_4 +% duration = [numerator]'_'denominator; eg: 3_8, _16 +% -time2_8beamAutoEnd = "2/8"; +% in 3/2 time: +% end beams each 1/2 note +% end beams with 16th notes each 1/4 note +% end beams with 32th notes each 1/8 note time3_2beamAutoEnd = "1/2"; time3_2beamAutoEnd_16 = "1/4"; time3_2beamAutoEnd_32 = "1/8"; + time3_4beamAutoBegin = "1/4"; time3_4beamAutoEnd_8 = "3/4"; time3_4beamAutoBegin_32 = "1/8"; time3_4beamAutoEnd_32 = "1/8"; + time3_8beamAutoBegin = "1/8"; time3_8beamAutoEnd = "3/8"; + +% in common time: +% end beams each 1/2 note +% end beams with 32th notes each 1/8 note +% end beams with 1/8 triplets each 1/4 note + time4_4beamAutoEnd_8 = "1/2"; -% 1/12 == 1/8 * 2/3 time4_4beamAutoEnd_12 = "1/4"; time4_4beamAutoEnd_32 = "1/8"; + time4_8beamAutoEnd_8 = "1/4"; time4_8beamAutoEnd_16 = "1/4"; time4_8beamAutoEnd_32 = "1/8"; + time4_16beamAutoEnd = "1/8"; + time6_8beamAutoEnd_8 = "3/8"; time6_8beamAutoEnd_16 = "3/8"; time6_8beamAutoEnd_32 = "1/8"; + time9_8beamAutoEnd_8 = "3/8"; time9_8beamAutoEnd_16 = "3/8"; time6_8beamAutoEnd_32 = "1/8"; +%{ + +Users may override in most cases, simply by issuing + + % from here on consider ending beam every 1/4 note + \property Voice.beamAutoEnd = "1/4" + + % no autobeaming + \property Voice.beamAuto = "0" + +or, more globally, by doing: + + \paper{ + \translator{ + \VoiceContext + % consider ending beam at every 1/2 note + beamAutoEnd = "1/2"; + } + } + +see also input/test/auto-beam-override.ly + +%} + diff --git a/ly/engraver.ly b/ly/engraver.ly index 492d6b981b..7374759171 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -63,7 +63,7 @@ StaffContext=\translator { alignmentReference = \center; \consists "Staff_group_bar_engraver"; - \consistsend "Axis_group_engraver"; + \accepts "Staff"; \accepts "RhythmicStaff"; \accepts "GrandStaff"; diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index e72232e446..c53adf4866 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -21,7 +21,7 @@ Prereq: tetex make all ln -s /usr/share/texmf/fonts/tfm/public/cm/ tfm -make -C Documentation info || true +make -C Documentation || true make htmldoc || true @@ -34,7 +34,7 @@ tar -C htmldocs -xzf out/htmldoc.tar.gz strip lily/out/lilypond mi2mu/out/mi2mu make prefix="$RPM_BUILD_ROOT/usr" install -gzip -9fn $RPM_BUILD_ROOT/usr/info/* || true +# gzip -9fn $RPM_BUILD_ROOT/usr/info/* || true mkdir -p $RPM_BUILD_ROOT/etc/profile.d cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh @@ -44,11 +44,11 @@ cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT/etc/profile.d/lilypond.csh touch /tmp/.lilypond-install rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install -/sbin/install-info /usr/info/lilypond.info.gz /usr/info/dir || true +# /sbin/install-info /usr/info/lilypond.info.gz /usr/info/dir || true %preun if [ $1 = 0 ]; then - /sbin/install-info --delete /usr/info/lilypond.info.gz /usr/info/dir || true + true # /sbin/install-info --delete /usr/info/lilypond.info.gz /usr/info/dir || true fi @@ -67,7 +67,6 @@ fi /usr/bin/ly2dvi /usr/bin/lilypond /usr/bin/mi2mu -/usr/info/* /usr/man/man1/mi2mu.1 /usr/man/man1/lilypond.1 /usr/man/man1/mudela-book.1 diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index 552cb9c4e1..e913cd4d66 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.1.45 -Inschrijf datum: 28MAY99 +Versie: 1.1.46 +Inschrijf datum: 04JUN99 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.1.45.tar.gz + 770k lilypond-1.1.46.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.45.tar.gz + 770k lilypond-1.1.46.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index d2add6d798..a3fb14fe65 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.1.45 -Entered-date: 28MAY99 +Version: 1.1.46 +Entered-date: 04JUN99 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.1.45.tar.gz + 770k lilypond-1.1.46.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.45.tar.gz + 770k lilypond-1.1.46.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index e6d7b1f5af..bd326193d7 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.1.45 +Version: 1.1.46 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.45.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.46.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -27,7 +27,7 @@ part extraction. It includes a nice font of musical symbols. make all ln -s /usr/share/texmf/fonts/tfm/public/cm/ tfm -make -C Documentation info || true +make -C Documentation || true make htmldoc || true @@ -40,7 +40,7 @@ tar -C htmldocs -xzf out/htmldoc.tar.gz strip lily/out/lilypond mi2mu/out/mi2mu make prefix="$RPM_BUILD_ROOT/usr" install -gzip -9fn $RPM_BUILD_ROOT/usr/info/* || true +# gzip -9fn $RPM_BUILD_ROOT/usr/info/* || true mkdir -p $RPM_BUILD_ROOT/etc/profile.d cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT/etc/profile.d/lilypond.sh @@ -50,11 +50,11 @@ cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT/etc/profile.d/lilypond.csh touch /tmp/.lilypond-install rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install -/sbin/install-info /usr/info/lilypond.info.gz /usr/info/dir || true +# /sbin/install-info /usr/info/lilypond.info.gz /usr/info/dir || true %preun if [ $1 = 0 ]; then - /sbin/install-info --delete /usr/info/lilypond.info.gz /usr/info/dir || true + true # /sbin/install-info --delete /usr/info/lilypond.info.gz /usr/info/dir || true fi @@ -73,7 +73,6 @@ fi /usr/bin/ly2dvi /usr/bin/lilypond /usr/bin/mi2mu -/usr/info/* /usr/man/man1/mi2mu.1 /usr/man/man1/lilypond.1 /usr/man/man1/mudela-book.1 diff --git a/make/toplevel.make.in b/make/toplevel.make.in index 07cd9a06c2..441b1fe1c6 100644 --- a/make/toplevel.make.in +++ b/make/toplevel.make.in @@ -36,8 +36,8 @@ examples: localinstall: mkdir -p $(datadir) + rm -f $(datadir)/cmtfm $(LN_S) $(TEX_TFMDIR) $(datadir)/cmtfm - local-WWW-clean: $(depth)/buildscripts/out/clean-fonts diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index 4d38b9e1dd..9c88e2d9b6 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -35,13 +35,12 @@ if test = 0: input feta-klef; input feta-timesig; else: - input feta-bolletjes; +% input feta-bolletjes; % input feta-banier; % input feta-eindelijk; % input feta-klef; % input feta-toevallig; -% input feta-schrift; -% input feta-schrift; + input feta-schrift; % input feta-haak; % input feta-timesig; fi diff --git a/mf/feta-klef.mf b/mf/feta-klef.mf index 6a3f659785..32265045c8 100644 --- a/mf/feta-klef.mf +++ b/mf/feta-klef.mf @@ -15,8 +15,8 @@ fet_begingroup("clefs"); % def set_horizontal_spacing = save left_space ,right_space; - left_space# = reduced_il#; - right_space# = reduced_il#; + left_space# = 0; + right_space# = 0; enddef; diff --git a/mf/feta-test13.mf b/mf/feta-test13.mf new file mode 100644 index 0000000000..3d2ed3cea2 --- /dev/null +++ b/mf/feta-test13.mf @@ -0,0 +1,21 @@ +% feta-test16 +% part of LilyPond's pretty-but-neat music font + +input feta-autometric; +fet_beginfont("feta-test", 16); +staffsize#:=16pt#; +test:=1; + +% smoked cheese +% test := -1; + + +% dem piksels. +%test := 1; + +input feta-generic; + +fet_endfont("feta"); + +end. + diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly index 8dcbb5fb15..432a60cc1b 100644 --- a/mutopia/gallina.ly +++ b/mutopia/gallina.ly @@ -45,7 +45,7 @@ Voice engraver by uncommenting the lines in the paper definition below. --MB %} -\version "1.0.16"; +\version "1.0.18"; global = \notes { \property StaffGroup.timeSignatureStyle = "old" diff --git a/ps/lily.ps b/ps/lily.ps index cd020ac71b..662ac2ec53 100644 --- a/ps/lily.ps +++ b/ps/lily.ps @@ -77,12 +77,12 @@ 0 0 moveto - 0 tuplet_h lineto + 0 tuplet_h dir mul lineto tuplet_dx tuplet_gapx sub 2 div - tuplet_dy tuplet_gapy sub 2 div tuplet_h add lineto + tuplet_dy tuplet_gapy sub 2 div tuplet_h dir mul add lineto tuplet_dx tuplet_gapx add 2 div - tuplet_dy tuplet_gapy add 2 div tuplet_h add moveto - tuplet_dx tuplet_dy tuplet_h add lineto + tuplet_dy tuplet_gapy add 2 div tuplet_h dir mul add moveto + tuplet_dx tuplet_dy tuplet_h dir mul add lineto tuplet_dx tuplet_dy lineto stroke } bind def diff --git a/scm/lily.scm b/scm/lily.scm index 74d1d2f10d..cc68e713a0 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -80,8 +80,37 @@ (define Piano_bar_engraver_visibility postbreak_only_visibility) (define Staff_group_bar_engraver_visibility postbreak_only_visibility) - - +;; Spacing constants for prefatory matter. +;; +;; rules for this are complicated. See [Wanske] page 126 -- 134 +;; +;; +(define space-alist + '( + (("Clef_item" "Key_item") . 2.5) + (("Key_item" "Time_signature") . 2.5) + (("Clef_item" "Time_signature") . 2.75) + (("Staff_bar" "Clef_item") . 1.0) + (("Clef_item" "Staff_bar") . 3.7) + (("Time_signature" "Staff_bar") . 2.0) + (("Key_item" "Staff_bar") . 2.5) + (("Span_bar" "Clef_item") . 1.0) + (("Clef_item" "Span_bar") . 3.7) + (("Time_signature" "Span_bar") . 2.0) + (("Key_item" "Span_bar") . 2.5) + (("Staff_bar" "Time_signature") . 1.0) + ) + + ) + +(define (break-align-spacer this next) + (let ((entry (assoc `(,this ,next) space-alist))) + (if entry + (cdr entry) + (begin (ly-warn (string-append "Unknown spacing pair " this ", " next)) + 0.0)))) + + ;;;;;;;; TeX diff --git a/scripts/abc-2-ly.py b/scripts/abc-2-ly.py index 6d3af3a519..b818d04351 100644 --- a/scripts/abc-2-ly.py +++ b/scripts/abc-2-ly.py @@ -14,13 +14,36 @@ import getopt import sys import re import string +import mpz header = {} global_voice_stuff = [] default_len = 4 global_key = [0] * 7 # UGH +DIGITS='0123456789' +def gcd (a, b): + while a % b: + a,b = b, a % b + return b + +class Rational: + def __init__ (self, n, d = 1): + self.num = n + self.den = d + + def simplify (self): + g = gcd (self.num, self.den) + self.num = self.num / g + self.den = self.den /g + if self.den < 0: + self.den = - self.den + self.num = - self.num + + def __sub__ (self, other): + pass + def dump_header (hdr): @@ -205,7 +228,7 @@ def octave_to_mudela_quotes (o): def parse_num (str): durstr = '' - while str[0] in "1234567890": + while str[0] in DIGITS: durstr = durstr + str[0] str = str[1:] @@ -215,11 +238,24 @@ def parse_num (str): return (str,n) -def duration_to_mudela_duration (multiply_tup, defaultlen): +def duration_to_mudela_duration (multiply_tup, defaultlen, dots): base = 1 + # (num / den) / defaultlen < 1/base + while base * multiply_tup[0] < defaultlen * multiply_tup[1]: + base = base * 2 + + + return '%d%s' % ( base, '.'* dots) + +class Parser_state: + def __init__ (self): + self.next_dots = 0 + self.next_den = 1 + + # WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP ! -def try_parse_note (str): +def try_parse_note (str, parser_state): mud = '' slur_begin =0 @@ -259,21 +295,38 @@ def try_parse_note (str): str = str[1:] num = 0 - den = 0 + den = parser_state.next_den + parser_state.next_den = 1 (str, num) = parse_num (str) if not num: num = 1 if str[0] == '/': - divide =1 - str = str[1:] - (str, den) =parse_num (str) - - if not den: den = 1 + while str[0] == '/': + str= str[1:] + d = 2 + if str[0] in DIGITS: + (str, d) =parse_num (str) + + den = den * d + + current_dots = parser_state.next_dots + parser_state.next_dots = 0 + while str[0] == '>': + str = str [1:] + current_dots = current_dots + 1; + parser_state.next_den = parser_state.next_den * 2 + + while str[0] == '<': + str = str [1:] + den = den * 2 + parser_state.next_dots = parser_state.next_dots + 1 + - print duration_to_mudela_duration ((num,den), default_len) - print '%s%s%d' % (pitch_to_mudela_name(notename, acc + global_key[notename]) , octave_to_mudela_quotes (octave), duration_mult) + + print '%s%s%s' % (pitch_to_mudela_name(notename, acc + global_key[notename]) , octave_to_mudela_quotes (octave), + duration_to_mudela_duration ((num,den), default_len, current_dots)) slur_end =0 if str[0] == ')': @@ -289,27 +342,46 @@ def junk_space (str): return str +def try_parse_escape (str): + if str [0] != '\\': + return str + + str = str[1:] + if str[0] == 'K': + compute_key () + + return str + + def try_parse_bar (str): if str[0] == '|': str = str[1:] return str -def try_parse_body_line (ln): + + +def try_parse_body_line (ln, state): prev_ln = '' while ln and ln != prev_ln: prev_ln = ln - ln = try_parse_note (ln) + ln = try_parse_note (ln, state) ln = try_parse_bar (ln) ln = junk_space (ln) + ln = try_parse_escape (ln) if ln: print 'Huh %s' % ln + + + + def parse_file (fn): f = open (fn) ls = f.readlines () head = 1 + state = Parser_state () for l in ls: if re.match ('^[\t ]*(%.*)?$', l): continue @@ -320,7 +392,7 @@ def parse_file (fn): head = 0 if not head: - m = try_parse_body_line (l) + m = try_parse_body_line (l,state) def identify(): diff --git a/stepmake/stepmake/c++-vars.make b/stepmake/stepmake/c++-vars.make index 45cf8a84fe..a65b2a7f94 100644 --- a/stepmake/stepmake/c++-vars.make +++ b/stepmake/stepmake/c++-vars.make @@ -4,7 +4,7 @@ # -pipe makes it go faster, but is not supported on all platforms. # EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion -EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion +EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion CXXFLAGS = $(ICFLAGS) $(DEFINES) $(addprefix -I,$(INCLUDES)) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS) $($(PACKAGE)_CFLAGS) $($(PACKAGE)_CXXFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS) -- 2.39.5