From b1aa7f76f1ad7606699fc797161a583df7367013 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Fri, 28 May 1999 13:59:44 +0200 Subject: [PATCH] release: 1.1.45 --- AUTHORS.txt | 29 +- Documentation/gnu-music.yo | 5 - Documentation/mutopia.yo | 46 --- Documentation/tex/glossary-table.data | 213 +++++----- Documentation/topdocs/AUTHORS.yo | 2 + NEWS | 20 +- VERSION | 4 +- input/test/dynamics.fly | 2 + input/test/orchestscore.ly | 8 +- lily/align-element.cc | 9 + lily/bar-script-engraver.cc | 8 + lily/break-align-item.cc | 48 +++ lily/collision.cc | 4 +- lily/command-request.cc | 8 +- lily/crescendo.cc | 13 +- lily/dynamic-engraver.cc | 35 +- lily/g-staff-side.cc | 49 ++- lily/g-stem-staff-side.cc | 2 +- lily/graphical-element.cc | 10 + lily/include/break-align-item.hh | 3 + lily/include/crescendo.hh | 5 +- lily/include/g-staff-side.hh | 23 +- lily/include/graphical-element.hh | 1 + lily/include/ly-symbols.hh | 1 + lily/include/musical-request.hh | 1 + lily/include/staff-side.hh | 60 --- lily/musical-request.cc | 7 + lily/request.cc | 7 - lily/score-priority-engraver.cc | 63 +-- lily/single-malt-grouping-item.cc | 2 +- lily/staff-side.cc | 143 ------- ly/engraver.ly | 9 +- ly/params.ly | 4 + ly/property.ly | 6 +- make/out/lelievijver.lsm | 8 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- mutopia/N.W.Gade/brass.ly | 58 +-- mutopia/N.W.Gade/score.ly | 2 +- mutopia/N.W.Gade/strings.ly | 48 +-- mutopia/N.W.Gade/wood.ly | 546 +++++++++++++------------- scripts/abc-2-ly.py | 189 +++++++-- scripts/ly2dvi.py | 2 +- 43 files changed, 857 insertions(+), 858 deletions(-) delete mode 100644 Documentation/mutopia.yo create mode 100644 input/test/dynamics.fly delete mode 100644 lily/include/staff-side.hh delete mode 100644 lily/staff-side.cc diff --git a/AUTHORS.txt b/AUTHORS.txt index bfbc050244..9ca7d95ce5 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -21,35 +21,38 @@ o Jan Arne Fagertun , o Anthony Fok , debian package: debian/* +o Bjoern Jacke german glossary + stuff. + o Neil Jerram . parts of Documenta- tion/Vocab* o Donald Ervin Knuth, http://www-cs-staff.stan- - ford.edu/~knuth/ mf/ital-*.mf (these were taken from + ford.edu/~knuth/ mf/ital-*.mf (these were taken from the CM fonts) -o Werner Lemberg , misc +o Werner Lemberg , misc bugfixes, some Beam and Stem code. -o David R. Linn , Mailing list +o David R. Linn , Mailing list maintenance. -o Adrian Mariano <> Reference manual, tutorial fixes, +o Adrian Mariano <> Reference manual, tutorial fixes, glossary. o Han-Wen Nienhuys , - http://www.cs.uu.nl/~hanwen/ Main author (initials: + http://www.cs.uu.nl/~hanwen/ Main author (initials: HWN). -o Jan Nieuwenhuizen , - http://www.xs4all.nl/~jantien/ Main author (initials: +o Jan Nieuwenhuizen , + http://www.xs4all.nl/~jantien/ Main author (initials: JCN). -o Alexandre Oliva , http://sun- +o Alexandre Oliva , http://sun- site.unicamp.br/~oliva/ testing -o Franc,ois Pinard , parts of - Documentation/Vocab*, started internationalization +o Franc,ois Pinard , parts of + Documentation/Vocab*, started internationalization stuff o Jeffrey B. Reed , Windows-NT sup- @@ -57,9 +60,9 @@ o Jeffrey B. Reed , Windows-NT sup- o Shay Rojanski Some mudela source. -Your name could be here! If you want to help, then take a -look at the SMALLISH PROJECTS section of in the file TODO. +Your name could be here! If you want to help, then take a +look at the SMALLISH PROJECTS section of in the file TODO. Some do not involve coding C++ -[And of course we sincerely thank J.S.Bach, F.Schubert, T. +[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and W.A.Mozart for their beautiful music] diff --git a/Documentation/gnu-music.yo b/Documentation/gnu-music.yo index 4e6e3148ed..e37331dcd5 100644 --- a/Documentation/gnu-music.yo +++ b/Documentation/gnu-music.yo @@ -86,8 +86,3 @@ it()Libraries for reading and writing various audio/music/notation formats. ) -Find sponsors. This project will take a long time, and in its infant -stages, having a hard and small core which does a lot of work, is more -efficient than lots of people doing small subprojects. Finanicial -support would be desirable. - diff --git a/Documentation/mutopia.yo b/Documentation/mutopia.yo deleted file mode 100644 index e3f5c55201..0000000000 --- a/Documentation/mutopia.yo +++ /dev/null @@ -1,46 +0,0 @@ -article(Mutopia project - manifesto)(HWN and JCN)() - -This is some random ranting about the Mutopia project, aka "Music To -the People," the ultimate goal which I want to accomplish using -LilyPond and mudela. - -sect(Why) - -Music publishers make lots of money out of selling sheet music which -is in the public domain (the composers died a long time ago). It is -usually prohibited to xerox the sheet music. Publishers have two -arguments to justify this policy: the high prices are there to -guarantee diversity (keeping lots of it in stock is expensive), and to -encourage new work being composed. - -This is bad. Storing a Mudela file takes almost no space at all, and -if sheet music could be had for free, then it would be much easier -obtain less famous music. These composers have died long ago, and not -having their music available only discourages people from -experimenting with it. You deserve to get public domain music for -free (zero cents) - -sect(What ) - -For literature, the project Gutenberg has an archive of public domain -literary works. For music, this does not exist yet. - -We also need an archive of public domain sheet music; this is what we -call The Mutopia Project. - - -sect(Status) - -This project is still in its infancy: we have very little amount of -music available. The music is partly downloadable from the website. -All of it is included in the source archive of LilyPond. - -itemize( -it()J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C - minor fugue. Solo cello suites: suite II. Six small preludes: some - preludes. -it()W. A. Mozart, Horn concerto 3, solo part + cadenza. -it()F. Schubert, St\"andchen (Serenade) "Leise flehen meine Lieder" -it()Tarquinio Merula, La Gallina a 2 violini -it()Paul Lacome d'Estalenx, La Feria, Los Toros (oboe 1) -) diff --git a/Documentation/tex/glossary-table.data b/Documentation/tex/glossary-table.data index 981de9bf67..978e5bf216 100644 --- a/Documentation/tex/glossary-table.data +++ b/Documentation/tex/glossary-table.data @@ -7,9 +7,9 @@ A@la@@@@@ accent@accent@Akzent@@accent@accento@ accidental@altération accidentelle@Vorzeichen@@toevallig teken@accidento@ adjacent keys@tons voisins@@@@@ -alto@alto@@@alt@@ +alto@alto@Alt@@alt@@ ancient form??? (diatonic minor scale)@forme du mode mineur ancien@@@@@ -appoggiatura@appogiature, ports de voix, notes d'agr\'ement@langer Vorschl\"age@@lange voorslag@appogiature@ +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@ artificial measure@mesure artificielle@@@@@ @@ -19,99 +19,99 @@ augmented (interval)@augment B@si@@@@@ backfall, forefall@accent, chute, port de voix@Vorschlag@@korte voorslag@appogiature@ bar line@barre (de mesure)@Taktstrich@@maatstreep@stanghetta@ -bar; measure@mesure@@@maat, maatstreep@@ -baritone@bariton@@@bariton@@ -bass clef@clé de fa@F Schl\"ussel@@F sleutel, bas sleutel@chiave di basso@ -bass@basse@@@bas@@ +bar; measure@mesure@Takt@@maat, maatstreep@@ +baritone@bariton@Bariton@@bariton@@ +bass clef@clé de fa@Bass-Schlüssel, F-Schlüssel@@F sleutel, bas sleutel@chiave di basso@ +bass@basse@Bass@@bas@@ beam@barre@Balken@@waardestreep/balk@barra@ -beat@temps@@@tel@@ +beat@temps@Takt(-schlag)@@tel@@ brace@accolade@Klammer@@accolade, haak@accolada@Symbol at the start of a system that connects staffs. -brass@@@@koper (blazers)@@ -C clef@clé d'ut@@@C sleutel, alt sleutel@chiave di tenore@ +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@@@@@ -cadence@cadence@@@cadens@@ +cadence@cadence@Kadenz@@cadens@@ cadenza@fioriture@@@cadens@cadenza@ 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@@@@@ -chord@accord@@@akkoord@@ -chromatic scale@gamme chromatique@@@chromatische toonladder@@ +chord@accord@Akkord@@akkoord@@ +chromatic scale@gamme chromatique@Chromatische Tonleiter@@chromatische toonladder@@ chromatic semitone@demi-ton chromatique@@@chromatische halve toon@@ chromatic transposition@transposition chromatique@@@@@ chromatic type@genre chromatique@@@@@ -church mode, ecclesiastical mode@mode ecclésiastique@@@kerk toonladder@@ -clef@clé@Schl\"ussel@@sleutel@la chiave (pl. le chiavi)@ -comma@comma@@@komma@@Difference in pitch of a note when the note is derived from a different tuning system. -compound interval@intervalle composé@@@@@ +church mode, ecclesiastical mode@mode ecclésiastique@Kirchentonart@@kerk toonladder@@ +clef@clé@Notenschlüssel@@sleutel@la chiave (pl. le chiavi)@ +comma@comma@Komma@@komma@@Difference in pitch of a note when the note is derived from a different tuning system. +compound interval@intervalle composé@Komplementärintervall@@@@ compound measure@mesure composée@@@samengestelde maat@@ conjunct movement@mouvement conjoint@@@@@ -consonant interval; consonance@consonance@@@consonant@@ -contralto@contralto@@@@@ +consonant interval; consonance@consonance@Konsonanz@@consonant@@ +contralto@contralto@Alt(-stimme), alt-@@@@ contro-time@contre-temps@@@@@ -crescendo@crescendo@@@@crescendo@written with an extended opening angular bracket, indicates increasing volume +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é@@@@@ dash over/below@@@@@pizzicato@With plucked strings -decrescendo@@@@@decrescendo@written with an extended closing angular bracket, indicates decreasing volume -degree [of the scale]@degré [de la gamme]@@@trap [van de toonladder]@@ +decrescendo@@Decrecendo@@@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 majeur toonladder@@ -diatonic minor scale@gamme diatonique mineure@@@@@ +diatonic major scale@gamme diatonique majeure@Diatonische Durtonleiter@@diatonische majeur toonladder@@ +diatonic minor scale@gamme diatonique mineure@Diatonische Molltonleiter@@@@ diatonic semitone@demi-ton diatonique@@@diatonische halve toon@@ -diatonic type@genre diatonique@@@@@ +diatonic type@genre diatonique@diatonisch@@@@ diatonic@diatonique@@@diatonisch@@A diatonic scale is a scale consisting of whole and half tones. -diminished (interval)@diminué (intervalle)@@@verminderd (interval)@@ +diminished (interval)@diminué (intervalle)@vermindertes (Intervall)@@verminderd (interval)@@ disjunct movement@mouvement disjoint@@@@@ -dissonant interval; dissonance@dissonance@@@dissonant interval; dissonant@@ +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@@@dominant septiem akkoord@@ -dominant@dominante@@@dominant@@A tone that creates tension;the fifth degree of the scale. -dorian mode@@@@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. +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 and curved line combined@point et liaison combinés@@@@@ -dot over/below@@@@staccato@staccato@Play each note short. -dot@point@@@punt@@ -dotted note@note pointée@@@@@ +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 dotted note@note doublement pointée@@@@@ +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 triplet@double triolet@@@dubbele triool@@ +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. duple meter@temps binaire@@@tweedelige maatsoort@@ duplet@duolet@@@duool@@ -duration@durée@@@duur, lengte@@ +duration@durée@Dauer, Länge@@duur, lengte@@ E@mi@@@@@ -eighth note@croche@@quaver@achtste noot@@ -eighth rest@demi-soupir@@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@@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 +eighth note@croche@achtel Note@quaver@achtste noot@@ +eighth rest@demi-soupir@achtel Pause@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 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@@@@@ fermata@pauses@Fermate@@fermate@fermata@Prolonged sound or silence of indefinite duration -fifth@quinte@@@kwint@@ -flag, hook, tail, pennant@crochet@F\"anchen@@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. +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. flat@bémol@Be@@mol@bemolle@Lower pitch by a semitone four-bar rest@bâton de pause@@@@@ -fourth@quarte@@@kwart@@ +fourth@quarte@Quarte@@kwart@@ G@sol@@@@@ glissando@glissement@Glissando@@glissando@glissando@Letting the pitch slide fluently from one note to the other -graces@petites notes@kurz Vorschl\"age, Manieren (?)@@versieringen@appogiature@ -grand staff@@@@piano systeem@@A combination of two staffs with a brace. Usually used for piano music. -half note@blanche@@minim@halve noot@@ -half rest@demi-pause@@minim rest@halve rust@@ +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@@ 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@@@@@ +harmonic interval@intervalle harmonique@Harmonisches Intervall@@@@ incomplete measure@mesure incomplète@@@@@ -interval@intervalle@@@interval@@Difference in pitch between two notes +interval@intervalle@Intervall@@interval@@Difference in pitch between two notes inversion of interval@renversement d'intervalle@@@interval inversie@@ irregular contro-time@contre-temps irrégulier@@@@@ irregular group@groupe irrégulier@@@@@ @@ -124,8 +124,8 @@ kind of rest@figure de silence@@@@@ leading note@sensible@@@@@ ledger line, leger line@ligne supplémentaire@Hilfslinien, Kopfstriche (?)@@hulplijntje@lineette@A ledger line is an extension of the staff. legato curve@liaison rythmique@@@legato boog@@ -lilypond@étang de lis@lilyteich@lily pond@lelievijver@stagno del giglio@A pond with lilies floating in it, also the name of a music typesetter. -line@ligne@@@lijn@@ +lilypond@étang de lis@Lilienteich@lily pond@lelievijver@stagno del giglio@A pond with lilies floating in it, also the name of a music typesetter. +line@ligne@Linie@@lijn@@ long appoggiatura@appogiature longue@@@@@ lower number@chiffre inférieur@@@@@ major (interval)@majeur (intervalle)@@@groot (interval)@@ @@ -134,118 +134,119 @@ meantone temperament@temp 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\`etre@Takt, Metrum@@maatsoort@@A recurring pattern of stress -metronome@métronome@@@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\"azels Metronom) -mezzo-soprano@mezzo-soprano@@@@@ +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) +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@@@@@ modal note@note modale@@@@@ mode@mode@@@@@ -modulation@modulation@@@modulatie@@ -mordent@mordant, pinc\'e@Pralltriller, Mordent@@mordent@mordente@ -motive@incise@@@motief@@ +modulation@modulation@Modulation@@modulatie@@ +mordent@mordant, pincè@Pralltriller, Mordent@@mordent@mordente@ +motive@incise@Motiv@@motief@@ musical ladder@échelle musicale@@@@@ -mixolydian mode@@@@Mixolydische toonladder@@Mode obtained by lowering the seventh in major. A mixolydian scale can be obtained by playing G to G with no sharps or flats. -natural sign@bécarre@Aufl\"osungszeichen@@herstellingsteken@bequadro@Do not play the following note flat or sharp. -ninth@@@@noon@@ +mixolydian mode@@Mixolydische Tonart@@Mixolydische toonladder@@Mode obtained by lowering the seventh in major. A mixolydian scale can be obtained by playing G to G with no sharps or flats. +natural sign@bécarre@Auflösungszeichen@@herstellingsteken@bequadro@Do not play the following note flat or sharp. +ninth@@None@@noon@@ note head@@Notenkopf@@noot balletje@@ note@note@Note@@noot@nota@ octave line@échelle d'octave@@@@@ octave line@clé d'octave@@@@@ octave sign@octave@Oktave@@@ottava@ -octave@octave@@@octaaf@@ -ornament, embellishment; accessory@agr\'ement, ornement@Verzierungen@@@fiorette, fioriture, abbellimenti@ +octave@octave@Oktave@@octaaf@@ +ornament, embellishment; accessory@agrèment, ornement@Verzierungen@@@fiorette, fioriture, abbellimenti@ part@@@@partij@@ pause@pause@Luftpause@@@@ pause@point d'orgue@@@@@ -perfect (interval)@juste (intervalle)@@@rein (interval)@@ +perfect (interval)@juste (intervalle)@reines (Intervall)@@rein (interval)@@ perfect major chord@accord parfait majeur@@@@@ perfect minor chord@accord parfait mineur@@@@@ phrase member@membre de phrase@@@@@ -phrase@phrase@@@frase, zin@@ +phrase@phrase@Phrase@@frase, zin@@ phrasing@phrasé@@@@@ -pitch pipe; tuning fork@diapason@@@stemfluitje; stemvork@@ -pitch@hauteur@@@toonhoogte@@ +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. quadruplet@quartolet@@@kwartool@@ -quarter note@noire@@crotchet@kwartnoot@@ -quarter rest@soupir@@crotchet rest@kwart rust@@ -register@registre@@@register@@ +quarter note@noire@viertel Note@crotchet@kwartnoot@@ +quarter rest@soupir@viertel Pause@crotchet rest@kwart rust@@ +register@registre@Register@@register@@ regular contro-time@contre-temps régulier@@@@@ regular syncopation@syncope régulière@@@@@ relative scales@gammes relatives, tons relatifs@@@@@ -repeat@barre de reprise@@@herhaling@@ +repeat@barre de reprise@Wiederholung@@herhaling@@ rest@silence@@@@@ rest@soupir@Pause@@rust@pausa@ return sign@renvoi@@@herstellingsteken@@ rhythm@rythme@Rhythmus@@ritme@@ rhythmic curve@courbe rythmique@@@@@ -scale@gamme@@@toonladder@@ -score@partition@@@partituur@@ -second@seconde@@@@secunde@ -semitone@demi-ton@@@halve toon@@ -seventh@septième@@@septiem@septime@ +scale@gamme@Tonleiter@@toonladder@@ +score@partition@Partitur@@partituur@@ +second@seconde@Sekunde@@@secunde@ +semitone@demi-ton@Halbton@@halve toon@@ +seventh@septième@Septime@@septiem@septime@ sextuplet@sextolet@@@sextool@@ sextuplet@sixain@@@sextool@@ shading signs@signes indicateurs de nuance@@@@@ -shading@nuance@@@@@ -sharp@dièse@@@kruis@@ +shading@nuance@Nuance@@@@ +sharp@dièse@Kreuz (um Halbton erhöht)@@kruis@@ short appoggiatura@appogiature brève@@@@@ simple appoggiatura@appogiature simple@@@@@ simple interval@intervalle simple@@@@@ simple measure@mesure simple@@@@@ -sixteenth note@double croche@@semiquaver@zestiende noot@@ -sixteenth rest@quart de soupir@@semiquaver rest@zestiende rust@@ -sixth@sixte@@@sext@@ -sixty-fourth note@quadruple croche@@hemidemisemiquaver@vierenzestigste noot@@ -sixty-fourth rest@seizième de soupir@@hemidemisemiquaver rest@@@ +sixteenth note@double croche@sechzehntel Note@semiquaver@zestiende noot@@ +sixteenth rest@quart de soupir@sechzehntel Pause@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@ -soprano@soprano@@@sopraan@@ +soprano@soprano@Sopran@@sopraan@@ space@espace@@@@@ -staff@portée@@@(noten)balk; partij@@pl staves or staffs +staff@portée@Noten(linien)system@@(noten)balk; partij@@pl staves or staffs stem@queue@Stiel, Hals@@stok@asta, gamba@ -strings@@@@strijkers@@ +strings@@Streicher@@strijkers@@ strong beat@temps fort@@@thesis@@ -subdominant@sous-dominante@@@@@The fourth degree of the scale +subdominant@sous-dominante@Subdominante@@@@The fourth degree of the scale submediant@@@@@@The sixth scale degree -subtonic@sous-tonique@@@@@The seventh degree of the scale +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@@ 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\`eme@System@@systeem@sitema@ -tempo indication@signes de temps@Zeitmasse, Tempobezeichnung@@tempo aanduiding@segno di tempo@ -tempo; movement@mouvement@@@@@ -tenor@ténor@@@@@ -tenth@@@@deciem@decime@ -tetrachord@tétracorde@@@@@ -third@tierce@@@terts@@ -thirty-second note@triple croche@@demisemiquaver@32e noot@@ -thirty-second rest@huitième de soupir@@demisemiquaver rest@32e rust@@ +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@@@@ +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) time signature@chiffrage (chiffres indicateurs), signe de valeur@Taktvorzeichnung, Taktvorzeichen@@maatsoort@segni di tempo@ tonal note@note tonale@@@@@ tonality@tonalité@@@tonaliteit@@ -tone@ton@@@toon@@ +tone@ton@Ton@@toon@@ tonic@tonique@@@tonica@@ -transposition@transposition@@@transpositie@@Shifting a melody up or down in pitch, while keeping the same relative pitches. -treble clef@clé de sol@G Schl\"ussel@@G sleutel, viool sleutel@chiave di violino@ -tremolo@tr\'emolo@Tremolo@@tremolo@tremolo@ +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@@@@@ +triplet@triolet@Triole@@@@ tritone@triton@@@@@ -turn; gruppetto@bris\'e, groupe, doubl\'e, grupetto@Doppelschlag@@dubbelslag@grupetto@ +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. unit of beat@unité de temps@@@@@ unit of measure@unité de mesure@@@@@ +upbeat, arsis@@Auftakt@@@@ upper number@chiffre supérieur@@@@@ -voice@voix@@@stem@@ +voice@voix@Stimme@@stem@@ weak beat@temps faible@@@arsis@@ -whole note@ronde@@semibreve@hele noot@@ -whole rest@pause@@semibreve rest@@@ -woodwind@@@@houtblazers@@ +whole note@ronde@ganze Note@semibreve@hele noot@@ +whole rest@pause@ganze Pause@semibreve rest@@@ +woodwind@@Holzbläser@@houtblazers@@ diff --git a/Documentation/topdocs/AUTHORS.yo b/Documentation/topdocs/AUTHORS.yo index 2822ed5b91..cce65cd0ac 100644 --- a/Documentation/topdocs/AUTHORS.yo +++ b/Documentation/topdocs/AUTHORS.yo @@ -16,6 +16,8 @@ it()nemail(Jan Arne Fagertun)(Jan.A.Fagertun@energy.sintef.no), TeX titling and lytodvi.sh it()nemail(Anthony Fok)(foka@debian.org), debian package: debian/* +it()nemail(Bjoern Jacke)(bjoern.jacke@gmx.de) + german glossary stuff. it()nemail(Neil Jerram)(nj104@cus.cam.ac.uk). parts of Documentation/Vocab* it()Donald Ervin Knuth, lurl(http://www-cs-staff.stanford.edu/~knuth/) diff --git a/NEWS b/NEWS index 1c4b2a0c7b..7f62b95684 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,22 @@ -pl 44.jcn1 - - bf: twinke repeats +pl 45 (may 28) + - german vocab. + + +pl 43.hwn2 + - split G_staff_side_item into G_staff_side_element and G_staff_side_item. + - junked old Staff_side + - Crescendo also uses G_staff_side_element + - crescendo_shorten paper var. + - create horizontal groups for break_aligment inside Break_align_item. + - more abc-2-ly fudging + +pl 44.mb1 + - bf, property.ly: change fontsize->fontSize + - N.W.Gade: removed old tie behaviour + - bf, ly2dvi: expand .sly extensions + +********* pl 44 pl 43.jcn2 - bf: repeat :| placement + core dump diff --git a/VERSION b/VERSION index ab235e0efa..22250ed8d2 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 -PATCH_LEVEL=44 -MY_PATCH_LEVEL=jcn1 +PATCH_LEVEL=45 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/dynamics.fly b/input/test/dynamics.fly new file mode 100644 index 0000000000..4b586d5c07 --- /dev/null +++ b/input/test/dynamics.fly @@ -0,0 +1,2 @@ +c''4 \p c \ff c^\ff +c \p \< \! c \ff\> c \!c-\p diff --git a/input/test/orchestscore.ly b/input/test/orchestscore.ly index eb7d152550..411d7beb95 100644 --- a/input/test/orchestscore.ly +++ b/input/test/orchestscore.ly @@ -88,18 +88,12 @@ c1 | c2 c | c c | c c | c c | c c | c c | c c | textheight = 260.\mm; \translator { \OrchestralScoreContext - minVerticalAlign = 3.5*\staffheight; % No effect!!?? + minVerticalAlign = 2.2*\staffheight; } \translator { \StaffContext \consists "Staff_margin_engraver"; marginScriptPadding = 15.0; } - \translator { \StaffGroupContext - minVerticalAlign = 2.5*\staffheight; - } - \translator { \GrandStaffContext - minVerticalAlign = 2.5*\staffheight; - } } } diff --git a/lily/align-element.cc b/lily/align-element.cc index 82111b9e2e..0e0b5a5605 100644 --- a/lily/align-element.cc +++ b/lily/align-element.cc @@ -97,6 +97,15 @@ Align_element::do_side_processing () { dims.push (y); Score_element *e =dynamic_cast(elem_l_arr_[i]); + + SCM extra_dims = e->get_elt_property (extra_space_scm_sym); + if (extra_dims != SCM_BOOL_F) + { + extra_dims = SCM_CDR (extra_dims); + dims.top ()[LEFT] -= gh_scm2double (SCM_CAR (extra_dims)); + dims.top ()[RIGHT] += gh_scm2double (SCM_CAR (extra_dims)); + } + elems.push (e); } } diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index a0e33d0d8e..a7f59dea8e 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -36,6 +36,12 @@ Bar_script_engraver::do_creation_processing () } } +/* + Some interesting item came across. Lets attach the text and the + positioner to the item. + +*/ + void Bar_script_engraver::do_acknowledge_element (Item *i) { @@ -47,6 +53,8 @@ Bar_script_engraver::do_acknowledge_element (Item *i) staff_side_p_->dim_cache_[axis_]->parent_l_ = i->dim_cache_[axis_]; + if (!text_p_->dim_cache_[other_axis]->parent_l_) + text_p_->dim_cache_[other_axis]->parent_l_ = i->dim_cache_[other_axis]; staff_side_p_->add_support (i); /* diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 8fd12ab3b6..ab9c805824 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -8,6 +8,7 @@ #include "break-align-item.hh" #include "dimensions.hh" +#include "p-score.hh" void Break_align_item::do_pre_processing() @@ -17,9 +18,56 @@ Break_align_item::do_pre_processing() Axis_align_item::do_pre_processing(); } + + + Break_align_item::Break_align_item () { stacking_dir_ = RIGHT; threshold_interval_[SMALLER] = 1.5 PT; set_axis (X_AXIS); } + +void +Break_align_item::add_breakable_item (Item *it) +{ + SCM pr = it->remove_elt_property (break_priority_scm_sym); + + if (pr == SCM_BOOL_F) + return; + + int priority = gh_scm2int (SCM_CDR (pr)); + + Score_element * column_l = get_elt_by_priority (priority); + Axis_group_item * hg=0; + if (column_l) + { + hg = dynamic_cast (column_l); + } + else + { + hg = new Axis_group_item; + hg->set_axes (X_AXIS,X_AXIS); + + /* + this is quite ridiculous, but we do this anyway, to ensure that no + 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); + + pscore_l_->typeset_element (hg); + add_element_priority (hg, priority); + + 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/collision.cc b/lily/collision.cc index b4136ae520..1b1f1be105 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -36,8 +36,8 @@ int idx (int dir, bool h_shift_b) return j; } -/** This complicated routine moves note columns around horizontally - (and rests vertically) to ensure that notes don't clash. +/** This complicated routine moves note columns around horizontally to + ensure that notes don't clash. This should be done better, probably. diff --git a/lily/command-request.cc b/lily/command-request.cc index 335c929042..6cbd2bc92f 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -1,5 +1,5 @@ /* - commandrequest.cc -- implement Nonmusical reqs + command-request.cc -- implement non-musical reqs source file of the GNU LilyPond music typesetter @@ -91,9 +91,6 @@ Partial_measure_req::do_print() const DOUT << length_mom_; } - - - void Time_signature_change_req::do_print() const { @@ -105,7 +102,8 @@ Time_signature_change_req::do_print() const bool Time_signature_change_req::do_equal_b (Request * r) const { - Time_signature_change_req * m = dynamic_cast (r); + Time_signature_change_req * m + = dynamic_cast (r); return m && m->beats_i_ == beats_i_ && one_beat_i_ == m->one_beat_i_; diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 409e29a4b8..b499af90b6 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -17,22 +17,17 @@ Crescendo::Crescendo () { grow_dir_ =0; - dir_ = DOWN; dyn_b_drul_[LEFT] = dyn_b_drul_[RIGHT] =false; } -Interval -Crescendo::symbol_height () const -{ - return get_symbol ().dim_[Y_AXIS]; -} -static Real absdyn_dim = 10 PT; // ugh + Molecule Crescendo::get_symbol () const { Real w_dim = extent (X_AXIS).length (); + Real absdyn_dim = paper_l ()-> get_realvar (ly_symbol ("crescendo_shorten")); if (dyn_b_drul_[LEFT]) { w_dim -= absdyn_dim; @@ -64,6 +59,7 @@ Molecule* Crescendo::do_brew_molecule_p () const { Molecule* m_p =0; + Real absdyn_dim = paper_l ()-> get_realvar (ly_symbol ("crescendo_shorten")); Real x_off_dim=0.0; if (dyn_b_drul_[LEFT]) x_off_dim += absdyn_dim; @@ -71,9 +67,8 @@ Crescendo::do_brew_molecule_p () const m_p = new Molecule; Molecule s (get_symbol ()); m_p->add_molecule (s); - m_p->translate (Offset (x_off_dim, coordinate_offset_f_)); + m_p->translate_axis (x_off_dim, X_AXIS); return m_p; } - diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index b5d5d37906..b0670d5236 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -27,6 +27,9 @@ class Dynamic_engraver : public Engraver { G_text_item * text_p_; G_staff_side_item * staff_side_p_; + G_staff_side_spanner * ss_span_p_; + G_staff_side_spanner * to_end_ss_span_p_; + Crescendo * to_end_cresc_p_; Crescendo * cresc_p_; @@ -54,6 +57,7 @@ Dynamic_engraver::Dynamic_engraver() text_p_ =0; staff_side_p_ =0; to_end_cresc_p_ = cresc_p_ = 0; + ss_span_p_ = to_end_ss_span_p_=0; cresc_req_l_ = 0; } @@ -95,6 +99,7 @@ void Dynamic_engraver::do_process_requests() { Crescendo* new_cresc_p=0; + G_staff_side_spanner * new_sss_p =0; for (int i=0; i < dynamic_req_l_arr_.size(); i++) { if (Text_script_req *absd = @@ -133,7 +138,7 @@ Dynamic_engraver::do_process_requests() announce_element (Score_element_info (staff_side_p_, absd)); } else if (Span_req *span_l - = dynamic_cast (dynamic_req_l_arr_[i])) + = dynamic_cast (dynamic_req_l_arr_[i])) { if (span_l->span_dir_ == STOP) { @@ -145,11 +150,14 @@ Dynamic_engraver::do_process_requests() { assert (!to_end_cresc_p_); to_end_cresc_p_ =cresc_p_; + to_end_ss_span_p_ = ss_span_p_ ; + cresc_p_ = 0; + ss_span_p_ =0; Scalar prop = get_property ("dynamicDir", 0); if (prop.isnum_b ()) { - to_end_cresc_p_->dir_ = (Direction) (int) prop; + to_end_ss_span_p_->dir_ = (Direction) (int) prop; } } @@ -161,6 +169,11 @@ Dynamic_engraver::do_process_requests() new_cresc_p = new Crescendo; new_cresc_p->grow_dir_ = (span_l->span_type_str_ == "crescendo") ? BIGGER : SMALLER; announce_element (Score_element_info (new_cresc_p, span_l)); + + new_sss_p = new G_staff_side_spanner; + new_sss_p->set_victim (new_cresc_p); + new_sss_p->axis_ = Y_AXIS; + announce_element (Score_element_info (new_sss_p, span_l)); } } } @@ -171,11 +184,15 @@ Dynamic_engraver::do_process_requests() { ::warning (_ ("Too many crescendi here")); typeset_element (cresc_p_); + typeset_element (ss_span_p_); cresc_p_ = 0; + ss_span_p_ =0; } cresc_p_ = new_cresc_p; + ss_span_p_ = new_sss_p; cresc_p_->set_bounds(LEFT,get_staff_info().musical_pcol_l ()); + ss_span_p_->set_bounds (LEFT,get_staff_info().musical_pcol_l ()); if (text_p_) { cresc_p_->dyn_b_drul_[LEFT] = true; @@ -201,6 +218,8 @@ Dynamic_engraver::do_removal_processing () if (cresc_p_) { typeset_element (cresc_p_ ); + typeset_element (ss_span_p_); + ss_span_p_ =0; cresc_req_l_->warning (_ ("unended crescendo")); cresc_p_ =0; } @@ -214,9 +233,13 @@ Dynamic_engraver::typeset_all () if (to_end_cresc_p_) { to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); + to_end_ss_span_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); typeset_element (to_end_cresc_p_); + typeset_element (to_end_ss_span_p_); to_end_cresc_p_ =0; + to_end_ss_span_p_ =0; } + if (text_p_) { typeset_element (text_p_); @@ -237,10 +260,10 @@ Dynamic_engraver::acknowledge_element (Score_element_info i) if (staff_side_p_) staff_side_p_->add_support (i.elem_l_); - if (to_end_cresc_p_) - to_end_cresc_p_->add_support (i.elem_l_); + if (to_end_ss_span_p_) + to_end_ss_span_p_->add_support (i.elem_l_); - if (cresc_p_) - cresc_p_->add_support (i.elem_l_); + if (ss_span_p_) + ss_span_p_->add_support (i.elem_l_); } } diff --git a/lily/g-staff-side.cc b/lily/g-staff-side.cc index 91a6a18195..437f34fe21 100644 --- a/lily/g-staff-side.cc +++ b/lily/g-staff-side.cc @@ -1,5 +1,5 @@ /* - g-staff-side.cc -- implement G_staff_side_item + g-staff-side.cc -- implement G_staff_side_element source file of the GNU LilyPond music typesetter @@ -13,7 +13,7 @@ #include "warn.hh" #include "dimensions.hh" -G_staff_side_item::G_staff_side_item () +G_staff_side_element::G_staff_side_element () { dir_ = CENTER; to_position_l_ = 0; @@ -25,7 +25,7 @@ G_staff_side_item::G_staff_side_item () void -G_staff_side_item::do_pre_processing () +G_staff_side_element::do_pre_processing () { if (!dir_) dir_ = get_default_direction (); @@ -35,14 +35,14 @@ G_staff_side_item::do_pre_processing () } Direction -G_staff_side_item::get_default_direction () const +G_staff_side_element::get_default_direction () const { return DOWN; } void -G_staff_side_item::set_victim (Score_element *e) +G_staff_side_element::set_victim (Score_element *e) { add_dependency (e); to_position_l_ = e; @@ -50,7 +50,7 @@ G_staff_side_item::set_victim (Score_element *e) } void -G_staff_side_item::add_support (Score_element*e) +G_staff_side_element::add_support (Score_element*e) { add_dependency (e); support_l_arr_.push (e); @@ -58,7 +58,7 @@ G_staff_side_item::add_support (Score_element*e) void -G_staff_side_item::do_substitute_element_pointer (Score_element*o, Score_element*n) +G_staff_side_element::do_substitute_element_pointer (Score_element*o, Score_element*n) { Staff_symbol_referencer::do_substitute_element_pointer (o,n); if (o == to_position_l_) @@ -68,7 +68,7 @@ G_staff_side_item::do_substitute_element_pointer (Score_element*o, Score_element } void -G_staff_side_item::position_self () +G_staff_side_element::position_self () { if (to_position_l_ && to_position_l_->get_elt_property (transparent_scm_sym) != SCM_BOOL_F) @@ -85,6 +85,7 @@ G_staff_side_item::position_self () { Score_element * e = support_l_arr_ [i]; Real coord = e->relative_coordinate (common, axis_); + dim.unite (coord + e->extent (axis_)); } } @@ -116,7 +117,7 @@ G_staff_side_item::position_self () } void -G_staff_side_item::do_post_processing () +G_staff_side_element::do_post_processing () { if (axis_ == Y_AXIS) position_self (); @@ -124,7 +125,7 @@ G_staff_side_item::do_post_processing () void -G_staff_side_item::do_add_processing () +G_staff_side_element::do_add_processing () { if (staff_support_b_ && axis_ == Y_AXIS && staff_symbol_l ()) @@ -134,7 +135,7 @@ G_staff_side_item::do_add_processing () } Interval -G_staff_side_item::do_height () const +G_staff_side_element::do_height () const { Interval i; if (to_position_l_) @@ -142,6 +143,19 @@ G_staff_side_item::do_height () const return i; } +void +G_staff_side_element::do_print () const +{ +#ifndef NPRINT + if (to_position_l_) + DOUT << "positioning " << to_position_l_->name(); + + DOUT << "axis == " << axis_name_str (axis_) + << ", dir == " << to_str (dir_ ); +#endif +} + + Interval G_staff_side_item::do_width () const { @@ -150,14 +164,15 @@ G_staff_side_item::do_width () const return to_position_l_->extent (X_AXIS); return i; } + void G_staff_side_item::do_print () const { -#ifndef NPRINT - if (to_position_l_) - DOUT << "positioning " << to_position_l_->name(); + G_staff_side_element::do_print (); +} - DOUT << "axis == " << axis_name_str (axis_) - << ", dir == " << to_str (dir_ ); -#endif +void +G_staff_side_spanner::do_print () const +{ + G_staff_side_element::do_print (); } diff --git a/lily/g-stem-staff-side.cc b/lily/g-stem-staff-side.cc index 446e0649a6..4d96f2ff52 100644 --- a/lily/g-stem-staff-side.cc +++ b/lily/g-stem-staff-side.cc @@ -51,5 +51,5 @@ G_stem_staff_side_item::do_pre_processing () gh_double2scm(stem_l_->staff_line_leading_f () * gh_scm2double (p))); } - G_staff_side_item :: do_pre_processing (); + G_staff_side_item::do_pre_processing (); } diff --git a/lily/graphical-element.cc b/lily/graphical-element.cc index 10daaef6c1..89bdd3b95a 100644 --- a/lily/graphical-element.cc +++ b/lily/graphical-element.cc @@ -130,3 +130,13 @@ Graphical_element::name () const { return classname (this); } + +void +Graphical_element::print () const +{ +#ifndef NPRINT + DOUT << classname (this) << "{\n"; + do_print (); + DOUT << "}\n"; +#endif +} diff --git a/lily/include/break-align-item.hh b/lily/include/break-align-item.hh index d2b98fa7ce..120f14920d 100644 --- a/lily/include/break-align-item.hh +++ b/lily/include/break-align-item.hh @@ -15,9 +15,12 @@ /// align breakable items (clef, bar, etc.) class Break_align_item : public Axis_align_item { + protected: virtual void do_pre_processing(); public: + void add_breakable_item (Item *it); + Break_align_item (); VIRTUAL_COPY_CONS(Score_element); diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index f054deb541..f0364a2c03 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -10,12 +10,11 @@ #ifndef CRESCENDO_HH #define CRESCENDO_HH -#include "staff-side.hh" #include "spanner.hh" /** The hairpin symbol. (cresc) */ -class Crescendo : public Spanner , public Staff_side { +class Crescendo : public Spanner { public: int grow_dir_; @@ -26,8 +25,6 @@ public: protected: VIRTUAL_COPY_CONS(Score_element); virtual Molecule*do_brew_molecule_p() const; - virtual Interval symbol_height() const; - private: Molecule get_symbol() const; diff --git a/lily/include/g-staff-side.hh b/lily/include/g-staff-side.hh index e6808863a6..9acdbca344 100644 --- a/lily/include/g-staff-side.hh +++ b/lily/include/g-staff-side.hh @@ -10,6 +10,7 @@ #ifndef G_STAFF_SIDE_HH #define G_STAFF_SIDE_HH +#include "spanner.hh" #include "item.hh" #include "staff-symbol-referencer.hh" @@ -23,7 +24,7 @@ Amount of extra space to add. */ -class G_staff_side_item : public Item, public Staff_symbol_referencer +class G_staff_side_element : public Staff_symbol_referencer { void position_self (); @@ -35,7 +36,7 @@ public: //junkme. bool staff_support_b_; - G_staff_side_item (); + G_staff_side_element (); void set_victim (Score_element*); void add_support (Score_element*); @@ -43,7 +44,6 @@ public: virtual Direction get_default_direction () const; protected: virtual Interval do_height () const; - virtual Interval do_width () const; virtual void do_print () const; virtual void do_add_processing (); virtual void do_substitute_element_pointer (Score_element*,Score_element*); @@ -51,5 +51,22 @@ protected: virtual void do_post_processing (); }; +class G_staff_side_item : public G_staff_side_element, public Item +{ +public: + VIRTUAL_COPY_CONS(Score_element); +protected: + virtual Interval do_width () const; + virtual void do_print () const; +}; + +class G_staff_side_spanner : public G_staff_side_element, public Spanner +{ +public: + VIRTUAL_COPY_CONS(Score_element); +protected: + virtual void do_print () const; +}; + #endif /* G_STAFF_SIDE_HH */ diff --git a/lily/include/graphical-element.hh b/lily/include/graphical-element.hh index c84a21f717..819a0ea31f 100644 --- a/lily/include/graphical-element.hh +++ b/lily/include/graphical-element.hh @@ -62,6 +62,7 @@ public: Graphical_element *parent_l (Axis a) const; virtual void do_print () const; + virtual void print () const; }; #endif // GRAPHICAL_ELEMENT_HH diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh index 7d94aa2ceb..dc99b23c71 100644 --- a/lily/include/ly-symbols.hh +++ b/lily/include/ly-symbols.hh @@ -28,6 +28,7 @@ DECLARE_LY_SYMBOL(change); DECLARE_LY_SYMBOL(damping); DECLARE_LY_SYMBOL(dashed); DECLARE_LY_SYMBOL(extremal); +DECLARE_LY_SYMBOL(extra_space); DECLARE_LY_SYMBOL(dir_forced); DECLARE_LY_SYMBOL(extender_height); DECLARE_LY_SYMBOL(filledbox); diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index a8f51ab6e8..16aee2493e 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -73,6 +73,7 @@ public: String style_str_; protected: VIRTUAL_COPY_CONS(Music); + virtual bool do_equal_b (Request*)const; virtual void do_print () const; }; diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh deleted file mode 100644 index da73a3c84c..0000000000 --- a/lily/include/staff-side.hh +++ /dev/null @@ -1,60 +0,0 @@ -/* - staff-side.hh -- declare Staff_side - - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ - - -#ifndef STAFF_SIDE_HH -#define STAFF_SIDE_HH - -#include "score-element.hh" -#include "interval.hh" -#include "direction.hh" -#include "staff-symbol-referencer.hh" - -/** - - A symbol which sits either below or above "something" (usually, a - staff). - -*/ -class Staff_side : public Staff_symbol_referencer -{ -public: - - /** - Vertical dir of symbol relative to staff. -1 = below staff? - */ - Direction dir_; - Axis axis_; - Interval sym_int_; - - Real coordinate_offset_f_; - - /** - Add extra vertical space to the support symbols. - */ - Real padding_f_; - - Staff_side (); - void add_support (Score_element*); - - -protected: - virtual Interval symbol_height () const; - Interval symbol_extent () const; - virtual Real get_position_f () const; - virtual void do_substitute_element_pointer (Score_element *, Score_element*); - virtual void do_pre_processing (); - virtual void do_post_processing (); - virtual void do_add_processing (); - Interval support_extent () const; -private: - void do_side_processing (); - Link_array support_l_arr_; -}; - -#endif // STAFF_SIDE_HH diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 59512ca5e1..cb81818d3d 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -171,6 +171,13 @@ Text_script_req::do_print () const << ", style = " << style_str_; } +bool +Text_script_req::do_equal_b (Request *r) const +{ + Text_script_req * t = dynamic_cast(r); + return t && t->text_str_ == text_str_ && t->style_str_ == style_str_; +} + void Articulation_req::do_print () const { diff --git a/lily/request.cc b/lily/request.cc index 1cb84c9481..7c833def05 100644 --- a/lily/request.cc +++ b/lily/request.cc @@ -9,17 +9,11 @@ #include "request.hh" #include "debug.hh" - - - void Request::do_print() const { } - - - bool Request::equal_b (Request *r) const { @@ -30,6 +24,5 @@ bool Request::do_equal_b (Request*) const { return true; - } diff --git a/lily/score-priority-engraver.cc b/lily/score-priority-engraver.cc index 463cff1ca1..0948bc7537 100644 --- a/lily/score-priority-engraver.cc +++ b/lily/score-priority-engraver.cc @@ -6,7 +6,6 @@ (c) 1997--1999 Han-Wen Nienhuys */ - #include "axis-group-item.hh" #include "score-priority-engraver.hh" #include "item.hh" @@ -31,27 +30,11 @@ Score_priority_engraver::do_pre_move_processing() typeset_element (halign_p_); halign_p_ =0; } - -} - -void -Score_priority_engraver::add_horizontal_group (Item* it, int priority) -{ - if (!halign_p_) - { - halign_p_ = new Break_align_item; - halign_p_->set_elt_property (breakable_scm_sym, SCM_BOOL_T); - announce_element (Score_element_info (halign_p_,0)); - } - - if (priority == 0) - halign_p_->center_l_ = it; - - halign_p_->add_element_priority (it, priority); - - column_p_arr_.push (it); } +/* + TODO: move this logic into Break_align_item + */ void Score_priority_engraver::acknowledge_element (Score_element_info inf) { @@ -61,40 +44,20 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf) if (c->empty_b () || c->parent_l_) return; - SCM pr = item_l->remove_elt_property (break_priority_scm_sym); - - if (pr == SCM_BOOL_F) - return; - - bool breakable = (item_l->remove_elt_property (breakable_scm_sym) != SCM_BOOL_F); + bool breakable + = (item_l->remove_elt_property (breakable_scm_sym) != SCM_BOOL_F); if (!breakable) return ; - - int priority = gh_scm2int (SCM_CDR (pr)); - - Score_element * column_l = 0; - if (halign_p_) - column_l = halign_p_->get_elt_by_priority (priority); - Axis_group_item * hg=0; - if (column_l) - { - hg = dynamic_cast (column_l); - } - else + + + if (!halign_p_) { - hg = new Axis_group_item; - hg->set_axes (X_AXIS,X_AXIS); - hg->set_elt_property (ly_symbol("origin"), - SCM_EOL); - announce_element (Score_element_info (hg,0)); - add_horizontal_group (hg, priority); + halign_p_ = new Break_align_item; + halign_p_->set_elt_property (breakable_scm_sym, SCM_BOOL_T); + announce_element (Score_element_info (halign_p_,0)); } - - hg->set_elt_property (ly_symbol("origin"), - scm_cons (gh_str02scm (item_l->name()), - hg->get_elt_property (ly_symbol ("origin")))); - hg->add_element (item_l); - + + halign_p_->add_breakable_item (item_l); } } diff --git a/lily/single-malt-grouping-item.cc b/lily/single-malt-grouping-item.cc index 6d5e2e1767..77848e79fa 100644 --- a/lily/single-malt-grouping-item.cc +++ b/lily/single-malt-grouping-item.cc @@ -39,7 +39,7 @@ Single_malt_grouping_item::my_width () const if (pc != il->column_l ()) { /* this shouldn't happen, but let's continue anyway. */ - warning (_("Single_malt_grouping_item: I've been drinking too much (fixme)")); + programming_error (_("Single_malt_grouping_item: I've been drinking too much")); continue; /*UGH UGH*/ } diff --git a/lily/staff-side.cc b/lily/staff-side.cc deleted file mode 100644 index d223a7387f..0000000000 --- a/lily/staff-side.cc +++ /dev/null @@ -1,143 +0,0 @@ -/* - staff-side.cc -- implement Staff_side - - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ - -#include "interval.hh" -#include "paper-def.hh" -#include "staff-side.hh" -#include "staff-symbol.hh" -#include "debug.hh" -#include "dimensions.hh" - - -Staff_side::Staff_side() -{ - coordinate_offset_f_=0; - sym_int_ = Interval (0,0); - padding_f_ = 0.0; - dir_ = CENTER; - axis_ = Y_AXIS; -} - - -Interval -Staff_side::support_extent() const -{ - Interval y_int; - for (int i=0; i < support_l_arr_.size(); i++) - { - Dimension_cache *common = - common_group (support_l_arr_[i], axis_); - - Real y = support_l_arr_[i]->relative_coordinate (common, axis_) - -relative_coordinate (common,axis_); - - y_int.unite (y + support_l_arr_[i]->extent(axis_)); - } - - if (y_int.empty_b()) - { - y_int = Interval (0,0); - } - return Interval(y_int[LEFT] - padding_f_, y_int[RIGHT] + padding_f_); -} - -void -Staff_side::add_support (Score_element*i) -{ - support_l_arr_.push (i); - add_dependency (i); -} - -Real -Staff_side::get_position_f () const -{ - if (!dir_) - { - warning (_ ("Staff_side::get_position_f(): " - "somebody forgot to set my direction, returning -20")); - return -20; - } - - - Real y = 0; - Real inter_f = staff_line_leading_f () /2; - - Interval v = support_extent(); - - // ugh, dim[y] = PT over here - y = v[dir_] + 1 * dir_ * inter_f; - - int coordinate_offset_f_i = (int)rint (y / inter_f); - if (axis_ == Y_AXIS && abs (coordinate_offset_f_i) < lines_i ()) - { - if (!(abs (coordinate_offset_f_i) % 2)) - y += (Real)dir_ * inter_f; - } - - return y; -} - -Interval -Staff_side::symbol_height() const -{ - return Interval (0,0); -} - -void -Staff_side::do_pre_processing () -{ - if (axis_== X_AXIS) - do_side_processing (); -} - -void -Staff_side::do_side_processing () -{ - sym_int_ = symbol_extent(); - coordinate_offset_f_ = get_position_f(); - if (dir_) - coordinate_offset_f_ += - sym_int_[-dir_]; - -} - -/* - ugh should use do_width (), do_height (), get_extent () - */ -Interval -Staff_side::symbol_extent () const -{ - if (axis_ == Y_AXIS) - return symbol_height (); - else - { - assert (false); - } -} - - -void -Staff_side::do_post_processing() -{ - if (axis_ == Y_AXIS) - do_side_processing (); -} - -void -Staff_side::do_substitute_element_pointer (Score_element*o, Score_element*n) -{ - Staff_symbol_referencer::do_substitute_element_pointer (o,n); - support_l_arr_.unordered_substitute (o,n); -} - -void -Staff_side::do_add_processing () -{ - if (axis_ == Y_AXIS && staff_symbol_l ()) - add_support (staff_symbol_l ()); -} - diff --git a/ly/engraver.ly b/ly/engraver.ly index a12244d0c7..492d6b981b 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -114,12 +114,19 @@ VoiceContext = \translator { \consists "Slur_engraver"; \consists "Tie_engraver"; \consists "Tuplet_engraver"; - \consists "Note_heads_engraver" ; \consists "Skip_req_swallow_translator"; + \accepts Thread; % bug if you leave out this! }; \translator {\VoiceContext} +ThreadContext = \translator{ + \type Engraver_group_engraver; + \consists "Note_heads_engraver" ; + \name Thread; +}; + +\translator{\ThreadContext} GrandStaffContext=\translator{ \type "Engraver_group_engraver"; \name GrandStaff; diff --git a/ly/params.ly b/ly/params.ly index c18c9a85f4..845417014a 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -135,6 +135,10 @@ extender_height = 0.8*\staffline; % Multi-measure rests mmrest_x_minimum = 2.0*\staffheight; + +% chop off this much when next to pp / ff sign. +crescendo_shorten = 4.0 * \interline; + % in internote. restcollision_minimum_dist = 3.0; restcollision_minimum_beamdist = 1.5; diff --git a/ly/property.ly b/ly/property.ly index f0f0ddf6c4..ede2be764d 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -139,16 +139,16 @@ pleton = { \property Voice.pletvisibility = 3 } tiny = { - \property Voice.fontsize= "-2" + \property Voice.fontSize= "-2" \pletoff %urg } small = { - \property Voice.fontsize= "-1" + \property Voice.fontSize= "-1" } normalsize = { - \property Voice.fontsize= "0" + \property Voice.fontSize= "0" \pleton %urg } diff --git a/make/out/lelievijver.lsm b/make/out/lelievijver.lsm index a785c8213c..552cb9c4e1 100644 --- a/make/out/lelievijver.lsm +++ b/make/out/lelievijver.lsm @@ -1,15 +1,15 @@ Begin3 Titel: LilyPond -Versie: 1.1.44 -Inschrijf datum: 25MAY99 +Versie: 1.1.45 +Inschrijf datum: 28MAY99 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.44.tar.gz + 770k lilypond-1.1.45.tar.gz Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.44.tar.gz + 770k lilypond-1.1.45.tar.gz Copi-eer voorwaarden: GPL End diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 66b18d3008..d2add6d798 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 1.1.44 -Entered-date: 25MAY99 +Version: 1.1.45 +Entered-date: 28MAY99 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.44.tar.gz + 770k lilypond-1.1.45.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 770k lilypond-1.1.44.tar.gz + 770k lilypond-1.1.45.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 2f7efa7611..e6d7b1f5af 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.1.44 +Version: 1.1.45 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.44.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.45.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mutopia/N.W.Gade/brass.ly b/mutopia/N.W.Gade/brass.ly index 5624bd37e1..a4439356a1 100644 --- a/mutopia/N.W.Gade/brass.ly +++ b/mutopia/N.W.Gade/brass.ly @@ -437,17 +437,17 @@ c4. r8 | R2*8 | e4. \f r8 | e4. r8 | -r4 e-> ~ | -d8 r e4-> ~ | -d8 r d4 ~ | -e8 r r4 | -r e ~ | -d8 r e4 ~ | -d8 r d4 ~ | -e8 r r4 | -r e_"dim." ~ | -d8 r e4 ~ | -d8 r r4 | +r4 e-> ( | +) d8 r e4-> ( | +) d8 r d4 ( | +) e8 r r4 | +r e ( | +) d8 r e4 ( | +) d8 r d4 ( | +) e8 r r4 | +r e_"dim." | +) d8 r e4 ( | +) d8 r r4 | R2*47 | g,2 \f ~ | g4 r | @@ -497,9 +497,9 @@ e r | d r | d r | g, r | -e' ~ d8 r | +e' () d8 r | g,4 r | -e' ~ d8 r | +e' () d8 r | e4-. r | d-. r | d8-. r d-. r | @@ -583,7 +583,7 @@ R2*12 | g2 \f ~ | g4 r | g r | -g' ~ fis8 r | +g' () fis8 r | R2 | d'4 r | R2 | @@ -599,17 +599,17 @@ c4. r8 | R2*8 | e4. \f r8 | e4. r8 | -r4 g4 ~ | -fis8 r g4 ~ | -fis8 r d'4 ~ | -e8 r r4 | -r g, ~ | -fis8 r g4 ~ | -fis8 r d'4 ~ | -e8 r r4 | -r g, ~ | -fis8_"dim." r g4 ~ | -fis8 r r4 | +r4 g4 ( | +) fis8 r g4 ( | +) fis8 r d'4 ( | +) e8 r r4 | +r g, ( | +) fis8 r g4 ( | +) fis8 r d'4 ( | +) e8 r r4 | +r g, ( | +) fis8_"dim." r g4 ( | +) fis8 r r4 | R2*47 | g,2 \f ~ | g4. r8 | @@ -654,9 +654,9 @@ e r | d' r | d r | g,, r | -c' ~ g8 r | +c' () g8 r | g,4 r | -c' ~ g8 r | +c' () g8 r | g4 r | fis r | g8-. r g-. r | % Staccato copied from trp. I @@ -684,8 +684,8 @@ R2.*5 | f2.:32 \pp ~ | f2.:32 ~ | f2.:32 ~ | -f2.:32 ~ | -c'4 r r | +f2.:32 ( | +) c'4 r r | R2.*3 | c2.:32 \pp | c2.:32 | diff --git a/mutopia/N.W.Gade/score.ly b/mutopia/N.W.Gade/score.ly index ec55e58ff8..25902f259e 100644 --- a/mutopia/N.W.Gade/score.ly +++ b/mutopia/N.W.Gade/score.ly @@ -123,7 +123,7 @@ copyright = "Mats Bengtsson, 1999. Free circulation permitted and " + textstyle = "italic"; textScriptPadding = 5.0; textEmptyDimension = 1; - oldTieBehavior = 1; +% oldTieBehavior = 1; } \translator { \VoiceContext oldTieBehavior = 1; diff --git a/mutopia/N.W.Gade/strings.ly b/mutopia/N.W.Gade/strings.ly index af2739b0ad..373cacafde 100644 --- a/mutopia/N.W.Gade/strings.ly +++ b/mutopia/N.W.Gade/strings.ly @@ -118,8 +118,8 @@ b2 \p | % \p added \! e ) b | \tiny d8*1/2 \normalsize f2 \fz ( *7/8 | b,4 [c8 ) b] | -a2-> ~ | -gis4 e | +a2-> ( | +) gis4 e | a ( ) e' | e-. \< () \! e-. | e ( \fz \> [ d8 \! c ] | @@ -130,8 +130,8 @@ e ( \fz \> [ d8 \! c ] | \! e ) b | \tiny d8*1/2 \normalsize f2 \fz ( *7/8 | b,4 [c8 ) b] | -a2 \p ~ | -gis | +a2 \p ( | +) gis | \tiny a8*1/2 \normalsize d2 ( \> *7/8 | b4 [ c8 \! b ] | a2 \p | @@ -213,8 +213,8 @@ e^\trill \tiny [d16*1/2 e*1/2] \normalsize [f8 *1/2 ) es' \f ( ] | \! f2 ( ~ | f4 g | f ) e | -es2 ~ | -d4 r | +es2 ( | +) d4 r | \tiny f'8*1/2 \normalsize a4 \fz ( *3/4 e | f b, | ) c r | @@ -413,10 +413,10 @@ f2 ( \> | [ a,16 ( d a d ][a d a d] | [ b16 d b d ][b d b ) d] | R2 | -r8 [e16^"solo" ( f] ) e4 ~ | -d2_"dim." ~ | -d ~ | -c4 r | +r8 [e16^"solo" ( f] ) e4 ( | +) d2_"dim." ~ | +d ( | +) c4 r | r r8 d' ( | [ ) a bes () g d' ( ] | [ a ) bes g ] r | @@ -595,9 +595,9 @@ c, ~ c' r | [c,8 ( g' ][ c g c a ] | [bes c ] ) a4 r | R2. | -r4 r dis, \< ~ | -\! e r dis' \pp ~ | -e r r | +r4 r dis, \< ( | +) \! e r dis' \pp ( | +) e r r | R2. | r4 r c, \pp ~ | c2. ~ | @@ -770,8 +770,8 @@ r r8 | | | | -<{[f8 f f fis \f ~ ]}{[c'8 c c s]}> | - fis'8 | +<{[f8 f f fis \f (( ]}{[c'8 c c s]}> | +< ) a4. ) fis'4.> fis'8 | [g d g ] | | c,8 ( | @@ -813,10 +813,10 @@ g f4 \f f8 ( | ) f' > g8 ( | ) bes' > e,!8 ( | ) g' > | - ) g' > c,8 ~ | -f4. a8 ( | -[d f ) a ] c,,8 ~ | -f4. a8 ( | + ) g' > c,8 ( | +) f4. a8 ( | +[d f ) a ] c,,8 ( | +) f4. a8 ( | [d f ) a ] [f16 ( g ] | [f g f d ][ ) b8 bes'!16 ( c ] | [bes c bes g][ ) e8 c'16 ( d ] | @@ -970,8 +970,8 @@ g4:16 \< \! a4:16 | g4:16 \> a4:16 | g4:16 \! a4:16 | gis2 \fz ~ | -gis ~ | -f \p \> | +gis ( | +) f \p \> | \! e_"dim." | d | e | @@ -1218,9 +1218,9 @@ e2 \> ~ | e2 \> ~ | \! e4 r | e2 \fz ~ | -e ~ | -f \p ~ | -e | +e ( | +) f \p ( | +) e | d \> ( | e | \! f \p | diff --git a/mutopia/N.W.Gade/wood.ly b/mutopia/N.W.Gade/wood.ly index 25f85920b7..17ee152456 100644 --- a/mutopia/N.W.Gade/wood.ly +++ b/mutopia/N.W.Gade/wood.ly @@ -411,10 +411,10 @@ fis r g d'-. \p | [g8 e ) d ] g, ( | [g' e ) d ] b ( | [b' g ) fis] b | -f2 ~ | -fis!4 r8 b ( | -) f2 ~ | -fis!4 r8 b | +f2 ( | +) fis!4 r8 b ( | +) f2 ( | +) fis!4 r8 b | f r e r | d r d r | cis r r4 | @@ -432,12 +432,12 @@ b2 ~ | \context Voice = x {s8.. \tiny cis8 } > [fis''-. f-. f-. e-. ] | [e-. \< dis-. dis-. \! d-. ] | -d r b4 \f ~ | -cis8 [a'16-> ( b] ) a8 fis-. \p | % \p added +d r b4 \f ( | +) cis8 [a'16-> ( b] ) a8 fis-. \p | % \p added [fis-. f-. f-. e-. ] | [e-. dis-. dis-. d-. ] | -d r b4 \f ~ | -cis8 [a'16-> ( b] ) a8 r | +d r b4 \f ( | +) cis8 [a'16-> ( b] ) a8 r | d,4. r8 | d4.-> r8 | R2*2 | @@ -448,56 +448,56 @@ cis4.-> fis8-. \p | % \p added [fis-. \< f-. f-. e-. ] | [\! e-. d-. d-. ] [fis16 \mf ( g ] | ) fis8 [f16 ( g] ) f8-. [e16 \< ( fis ] | -) e8 [\! d16 ( e ] ) d8-. c! \f ~ | -c'4.-> b8 | -[g-. fis-. e-.] g,8 ~ | -b'4. \fz a,8 ~ | -a'4. \fz a,8 ~ | -fis' r a4-> ~ | % -> added -fis8 r a4-> ~ | -fis8 r f4 ~ | -e8 [a,16 ( b ] ) a8 a ~ | -fis' r a4-> ~ | -fis8 r a4-> ~ | -fis8 r f4 ~ | -e8 [a,16 ( b ] ) a8 a ~ | -fis' r a4_"dim." ~ | -fis8 r e4 ~ | -fis8 r a4 ~ | -fis8 r e4 \p ~ | -fis8 r r4 | +) e8 [\! d16 ( e ] ) d8-. c! \f ( | +) c'4.-> b8 | +[g-. fis-. e-.] g,8 ( | +) b'4. \fz a,8 ( | +) a'4. \fz a,8 ( | +) fis' r a4-> ( | % -> added +) fis8 r a4-> ( | +) fis8 r f4 ( | +) e8 [a,16 ( b ] ) a8 a ( | +) fis' r a4-> ( | +) fis8 r a4-> ( | +) fis8 r f4 ( | +) e8 [a,16 ( b ] ) a8 a ( | +) fis' r a4_"dim." ( | +) fis8 r e4 ( | +) fis8 r a4 ( | +) fis8 r e4 \p ( | +) fis8 r r4 | R2*3 | fis,2 \pp ~ | fis ~ | fis ~ | fis4 r | R2*4 | -e'2 \fz \> ~ | -\! fis,4 r | -b2 \> ~ | -\! ais4 r | +e'2 \fz \> ( | +) \! fis,4 r | +b2 \> ( | +) \! ais4 r | fis2 \pp \< ~ | \! fis ~ | fis \> ~ | \! fis4 r | R2*4 | -e'2 \fz \> ~ | -\! fis,4 r | -e'2 \p ~ | -ais, | +e'2 \fz \> ( | +) \! fis,4 r | +e'2 \p ( | +) ais, | R2*2 | -e'2 \p ~ | -ais, | -b ~ | -ais | -b_"dim." ~ | -ais ~ | +e'2 \p ( | +) ais, | b ( | +) ais | +b_"dim." ( | +) ais ( | +) b ( | c4 ) b8 r | e-. r e-. r | e-. r e-. r | -c2 ( ~ | -d4 ) c8 r | +c2 ( ( | +) d4 ) c8 r | d-. r d-. r | d-. r [d-. d-. ] | [c-. \< b-. a-. g-. ] | @@ -509,11 +509,11 @@ d-. r [d-. d-. ] | [g a g e][c e g a] | [c8 a ) g ] c, ( | [c' a ) g] r | -[e ( c ) b ] e ~ | -ais,2 ~ | -b4 r8 e ~ | -ais,2 ~ | -b4 r8 e | +[e ( c ) b ] e ( | +) ais,2 ( | +) b4 r8 e ( | +) ais,2 ( | +) b4 r8 e | bes r a r | g r e' r | d [a16 ( b ][c! d c b] | @@ -530,41 +530,41 @@ e2 ~ | ) fis r r [d'16 \p ( e] | ) d8-. [cis16 ( d] ) cis8-. [c16 ( d] | ) c8-. [ b16 ( c] ) b8-. [bes16 ( c ] | -) bes8-. r e4 \f ~ | -[fis8 d16 ( e] ) d8 [d16 \p ( e] | +) bes8-. r e4 \f ( | +[ ) fis8 d16 ( e] ) d8 [d16 \p ( e] | ) d8-. \< [cis16 ( d] ) cis8-. [c16 ( d] | ) c8-. [ b16 ( c] ) b8-. [bes16 ( \! c ] | -) bes8-. r e4 \f ~ | -[fis8 d16 ( e] ) d8 f ~ | -b4.-> f8 ~ | -b4.-> r8 | +) bes8-. r e4 \f ( | +[ ) fis8 d16 ( e] ) d8 f ( | +) b4.-> f8 ( | +) b4.-> r8 | R2 | -r4 r8 f \f ~ | -b4.-> f8 ~ | -b4.-> r8 | +r4 r8 f \f ( | +) b4.-> f8 ( | +) b4.-> r8 | R2 | r4 r8 [d,16 \p ( e] | ) d8-. [cis16 ( d] ) cis8-. [c16 ( d] | ) c8-. \< [ b16 ( c] ) \! b8-. [b'16 ( c ] | ) b8-. [bes16 ( c ] ) bes8-. [a16 ( b ] | -) a8-. [g16 ( as ] ) g8 b, \f ~ | -f'4.-> r8 | -r4 r8 c ~ | -e'4. \fz d,8 ~ | -d'4. d,8 ~ | -b' r a4-> ~ | -g8 r a4-> ~ | -g8 r g4 ~ | -fis8 [d16 ( e] ) d8 d ~ | -g r a4 ~ | -g8 r a4 ~ | -g8 r g4 ~ | -fis8 [d16 ( e] ) d8 c ~ | -b r c4 ~ | -b8 r c4_"dim." ~ | -b8 r c4 ~ | -b8 r a4 \p ~ | -g8 r r4 | +) a8-. [g16 ( as ] ) g8 b, \f ( | +) f'4.-> r8 | +r4 r8 c ( | +) e'4. \fz d,8 ( | +) d'4. d,8 ( | +) b' r a4-> ( | +) g8 r a4-> ( | +) g8 r g4 ( | +) fis8 [d16 ( e] ) d8 d ( | +) g r a4 ( | +) g8 r a4 ( | +) g8 r g4 ( | +) fis8 [d16 ( e] ) d8 c ( | +) b r c4 ( | +) b8 r c4_"dim." ( | +) b8 r c4 ( | +) b8 r a4 \p ( | +) g8 r r4 | R2 | b'4^"solo" \p ( fis \> | g [d8. \! e16 ] | @@ -583,30 +583,30 @@ R2*2 | d4. \fz d8 \> | [d d \! d] r | R2*3 | -r4 r8 c \f ~ | -c'4. e,8 ~ | -e'4. d,8 ~ | -d'4. d,8 ~ | -a'4. fis8 ~ | -g4 r8 g ~ | -c4 ~ b8 fis ~ | -g4 r8 g ~ | -c4 ~ b8 cis, ~ | -g'4. c,!8 ~ | -fis4. fis8 | +r4 r8 c \f ( | +) c'4. e,8 ( | +) e'4. d,8 ( | +) d'4. d,8 ( | +) a'4. fis8 ( | +) g4 r8 g ( | +) c4 () b8 fis ( | +) g4 r8 g ( | +) c4 () b8 cis, ( | +) g'4. c,!8 ( | +) fis4. fis8 | [g-. fis-. g-. fis-. ] | [g-. fis-. g-. fis-. ] | g-. r fis-. r | g r d r | [d16 ( e d e][d e d e] | [d e d e] [d e d e] | -) d4 r8 d ~ | -b'4 r8 d, ~ | -g4 r8 d ~ | -b'4 r8 d, ~ | -g,2 ~ | -g ~ | -g'4-. \fz r^\fermata +) d4 r8 d ( | +) b'4 r8 d, ( | +) g4 r8 d ( | +) b'4 r8 d, ( | +) g,2 ~ | +g ( | +) g'4-. \fz r^\fermata } @@ -642,11 +642,11 @@ r4 r8 d-. \p | [d e d b][g b d e] | [g8 e ) d ] g, ( | [g' e ) d ] g, ( | -[g' e ) d ] b' ~ | -f2 ~ | -fis!4 r8 b ( | -) f2 ~ | -fis!4 r8 b, ~ | +[g' e ) d ] b' ( | +) f2 ( | +) fis!4 r8 b ( | +) f2 ( | +) fis!4 r8 b, ~ | b r b r | b r b r | a r r4 | @@ -661,11 +661,11 @@ b4 \> a | g2 ~ | \! ) g4 r | R2*3 | -r4 gis \f ~ | -[ g!8 a16-> ( b ] ) a8 r | +r4 gis \f ( | +[ ) g!8 a16-> ( b ] ) a8 r | R2*2 | -r4 gis \f ~ | -[ g!8 a16 ( b ] ) a8 r | +r4 gis \f ( | +[ ) g!8 a16 ( b ] ) a8 r | fis4. r8 | fis4. r8 | R2*2 | @@ -676,20 +676,20 @@ g4. -> r8 | R2 | r4 r8 a-. \mf | [a-. gis-. gis-. g-. ] | -g [ fis-. fis-. ] fis \f ~ | % \f added -dis'4.-> r8 | -r4 r8 g,8 ~ | -e'4. \fz g,8 ~ | -e'4. \fz g,8 ~ | -fis r a4-> ~ | +g [ fis-. fis-. ] fis \f ( | % \f added +) dis'4.-> r8 | +r4 r8 g,8 ( | +) e'4. \fz g,8 ( | +) e'4. \fz g,8 ( | +) fis r a4-> ~ | a8 r a4-> ~ | -a8 r gis4 ~ | -[g!8 g-. g-. g~ ] | -fis! r a4 ~ | +a8 r gis4 ( | +[ ) g!8 g-. g-. g ( ] | +) fis! r a4 ~ | a8 r a4-> ~ | -a8 r gis4 ~ | -g!8 [g-. g-.] g~ | -fis! r a4_"dim." ~ | % dim. added +a8 r gis4 ( | +) g!8 [g-. g-.] g ( | +) fis! r a4_"dim." ~ | % dim. added a8 r a4 ~ | a8 r a4 ~ | a8 r a4 \p ~ | @@ -700,17 +700,17 @@ fis ~ | \! fis \>~ | \! fis4 r | R2*4 | -g2 \f \> ~ | -\! fis4 r | -b2 \> ~ | -\! ais4 r | +g2 \f \> ( | +) \! fis4 r | +b2 \> ( | +) \! ais4 r | fis2 \pp \< ~ | fis ~ | \! fis \>~ | \! fis4 r | R2*16 | -f2 \pp ~ | -g4. r8 | +f2 \pp ( | +) g4. r8 | b-. r a-. r | b-. r a-. r | a2 ~ | @@ -726,12 +726,12 @@ a r [g-. \p d'-. ] | [g a g e][c e g a] | [c8 a ) g ] c, ( | [c' a ) g] r | -[c, ( a ) g ] e' ~ | -ais,2 ~ | -b4 r8 e ~ | -ais,2 ~ | -b4 r8 e ~ | -bes r a r | +[c, ( a ) g ] e' ( | +) ais,2 ( | +) b4 r8 e ( | +) ais,2 ( | +) b4 r8 e ( | +) bes r a r | g r g r | [fis ( a16 b ][c! d c b] | [a b a g] ) fis8 r | @@ -747,62 +747,62 @@ fis4 \> g_"dim." ( | r r8 b-. \p | b [ais-. \< ais-. a-. ] | [a-. gis-. \! gis-. g-. ] | -g r cis4 \f ~ | -c! r8 b!-. \p | +g r cis4 \f ( | +) c! r8 b!-. \p | b [ais-. \< ais-. a-. ] | [a-. gis-. \! gis-. g-. ] | -g r cis4 \f ~ | -c! r8 b ~ | -f'4.-> b,8 ~ | -f'4.-> r8 | +g r cis4 \f ( | +) c! r8 b ( | +) f'4.-> b,8 ( | +) f'4.-> r8 | R2 | -r4 r8 b,8 \f ~ | -f'4.-> b,8 ~ | -f'4.-> r8 | +r4 r8 b,8 \f ( | +) f'4.-> b,8 ( | +) f'4.-> r8 | R2 | r4 r8 b,8-. \p | b-. [ais-. ais-. a-. ] | [a-. g-. g-. ] [b16 ( c ] | ) b8-. \< [bes16 ( c ] ) bes8-. [a16 ( b ] | -) \! a8-. [g16 ( as ] ) g8 f \f ~ | -b4.-> r8 | -r4 r8 c ~ | -a'4. \fz c,8 ~ | -a'4. \fz c,8 ~ | -b r c4-> ~ | -b8 r c4-> ~ | -b8 r bes4 ~ | -[a8 d16 ( e ] [) d8 c ~ ] | -b! r c4 ~ | -b8 r c4 ~ | -b8 r bes4-> ~ | -[a8 d16 ( e ] ) d8 a ~ | -g r a4 ~ | -g8_"dim." r a4 ~ | -g8 r a4 ~ | -g8 r fis4 ~ | -g8 \p r r4 | +) \! a8-. [g16 ( as ] ) g8 f \f ( | +) b4.-> r8 | +r4 r8 c ( | +) a'4. \fz c,8 ( | +) a'4. \fz c,8 ( | +) b r c4-> ( | +) b8 r c4-> ( | +) b8 r bes4 ( | +[ ) a8 d16 ( e ] [) d8 c ( ] | +) b! r c4 ( | +) b8 r c4 ( | +) b8 r bes4-> ( | +[ ) a8 d16 ( e ] ) d8 a ( | +) g r a4 ( | +) g8_"dim." r a4 ( | +) g8 r a4 ( | +) g8 r fis4 ( | +) g8 \p r r4 | R2*6 | r4 [g8. ( \f a16 ] | -) g2 ~ | -d_"dim." ~ | +) g2 ( | +) d_"dim." ~ | d ~ | d4. r8 | R2*6 | fis4. \fz \> \! g8 | [a-. b-. c-. ] r | R2*3 | -r4 r8 e, \f ~ | -e'4. a,8 ~ | -a'4. a,8 ~ | -a'4. fis,8 ~ | -d'4. c8 ~ | -b4 r8 g ( | +r4 r8 e, \f ( | +) e'4. a,8 ( | +) a'4. a,8 ( | +) a'4. fis,8 ( | +) d'4. c8 ( | +) b4 r8 g ( | e'4 [d8 ) c ] | b4 r8 g ( | -e'4~ ) d8 g, | -cis4. fis,8 ~ | -c'!4. c8 | +e'4 () ) d8 g, | +cis4. fis,8 ( | +) c'!4. c8 | [b-. c-. b-. c-. ] | [b-. c-. b-. c-. ] | b r a r | @@ -812,10 +812,10 @@ b r c r | d4 r | d4 r | b4 r | -d4 r8 d, ~ | -g2 ~ | -g ~ | -b4-. \fz r^\fermata +d4 r8 d, ( | +) g2 ~ | +g ( | +) b4-. \fz r^\fermata } fagotto=\notes\relative c' { @@ -833,16 +833,16 @@ R2*2 | bes8-. r a-. r | bes8-. r [a-. c-.] | [bes-. \< a-. g-. f-. ] | -[e-. \! d-. c-. ] c \f ~ | -c'4. r8 | -d4 ~ c8 r | -d4 ~ c8 r | -d4 ~ [c8 a16 ( b ] | -[c d c b] ) a8 f-> ~ | -e4 r8 [ a16 ( b ] | -[c d c b] ) a8 f-> ~ | -e4 r8 a ~ | -c r d r | +[e-. \! d-. c-. ] c \f ( | +) c'4. r8 | +d4 () c8 r | +d4 () c8 r | +d4 ( [ ) c8 a16 ( b ] | +[c d c b] ) a8 f-> ( | +) e4 r8 [ a16 ( b ] | +[c d c b] ) a8 f-> ( | +) e4 r8 a ( | +) c r d r | es r d r | d4 \fz r | R2*2 | @@ -862,36 +862,36 @@ g \f [c16 ( d] [es8 d16 c ] | [g g g g] | [g g g g] | g [c16 ( d] [es8 d16 c ] | -) d4 r8 c ~ | -g4.-> c8 ~ | -g4.-> r8 | -r4 r8 a ~ | -b4. g8 \f ~ | -c4.-> g8 ~ | -c4.-> r8 | -r4 r8 a \f ~ | -d4. \clef "tenor"; [g16 \p ( a] | +) d4 r8 c ( | +) g4.-> c8 ( | +) g4.-> r8 | +r4 r8 a ( | +) b4. g8 \f ( | +) c4.-> g8 ( | +) c4.-> r8 | +r4 r8 a \f ( | +) d4. \clef "tenor"; [g16 \p ( a] | ) g8 [fis16 ( g] ) fis8-. \< [f16 ( g ] | ) f8-. [e16 ( \! f ] ) e8 g-. \mf | [g-. fis-. \< fis-. f-. ] | -[f-. e-. \! e-. ] \clef "bass"; cis \f ~ | -e4. a,8 | -[d,-. e-. f-. ] f' ~ | -d4. d8 | -b4. b8 ~ | -c r f4-> ~ | -e8 r f4-> ~ | -e8 r c4 ~ | -[d8-. f-. d-. b ~ ] | -c r f4-> ~ | -e8 r f4-> ~ | -e8 r c4 ~ | -[d8-. f-. d-. b ~ ] | -c r f4 ~ | -e8 r f4_"dim." ~ | -e8 r f4 ~ | -e8 r f4 \p ~ | -e8 r r4 | +[f-. e-. \! e-. ] \clef "bass"; cis \f ( | +) e4. a,8 | +[d,-. e-. f-. ] f' ( | +) d4. d8 | +b4. b8 ( | +) c r f4-> ( | +) e8 r f4-> ( | +) e8 r c4 ( | +[ ) d8-. f-. d-. b ( ] | +) c r f4-> ( | +) e8 r f4-> ( | +) e8 r c4 ( | +[ ) d8-. f-. d-. b ( ] | +) c r f4 ( | +) e8 r f4_"dim." ( | +) e8 r f4 ( | +) e8 r f4 \p ( | +) e8 r r4 | r8 [g,-.^"solo" \p a-. b-. ] | c r r4 | R2 | @@ -903,10 +903,10 @@ e2 \p \< ~ | \! e \> ~ | \! e \< ~ | \! e \> | -\tiny \! d'8 \fz *1/2 ~ \normalsize f2 \> *7/8 ~ | -\! e4. r8 | -f,2 \> ( ~ | -[ \! e8 d c ) b ] | +\tiny \! d'8 \fz ( *1/2 \normalsize ) f2 \> ( *7/8 | +) \! e4. r8 | +f,2 \> ( ( | +[ ) \! e8 d c ) b ] | a2 \pp \< ~ | \! a | e' \> ~ | @@ -915,41 +915,41 @@ e2 \p ~ e ~ | e ~ | e | -\tiny d'8 \fz *1/2 ~ \normalsize f2 \> *7/8 ~ | -\! e4. r8 | -f,2 \p ~ | -e4 r | -f'2-> ~ | -e4. r8 | -f,2 ~ | -e | +\tiny d'8 \fz ( *1/2 \normalsize ) f2 \> ( *7/8 | +) \! e4. r8 | +f,2 \p ( | +) e4 r | +f'2-> ( | +) e4. r8 | +f,2 ( | +) e | d' \p ~ | d ~ | d_"dim." ~ | -d ~ | -c \pp ~ | -d4 ~ c8 r | +d ( | +) c \pp ( | +) d4 () c8 r | c r bes r | c r bes r | -d2 ~ | -es4 ~ d8 r | +d2 ( | +) es4 () d8 r | e! r f-. r | bes,-. r [a-. c-.] | [bes-. a-. g-. f-. ] | -[e-. d-. c-. ] c ~ | -c'4. \f r8 | -d4 ~ c8 r | -d4 ~ c8 a-. | +[e-. d-. c-. ] c ( | +) c'4. \f r8 | +d4 () c8 r | +d4 () c8 a-. | [bes-. c-. d-. es-. ] | d4.-> r8 | -es4 ~ d8 r | -es4 ~ d8 r | +es4 () d8 r | +es4 () d8 r | d4 ~ d8 [d16 ( e! ] | -[f g f e] ) d8 bes ~ | -a4 r8 [d16 ( e ] | -[f g f e] ) d8 bes ~ | -a4 r8 d ~ | -f r g r | +[f g f e] ) d8 bes ( | +) a4 r8 [d16 ( e ] | +[f g f e] ) d8 bes ( | +) a4 r8 d ( | +) f r g r | as r g r | c,4 \fz r | R2*6 | @@ -965,37 +965,37 @@ r r8 c' | [c \< c c c] | [c c c c] | [\! c \f c c c] | -[c c c ] f ~ | -c4.-> f8 ~ | -c4.-> r8 | -r4 r8 f8 ~ | -e!4. c8 \f ~ | -f4.-> c8 ~ | % slur added -f4.-> r8 | -r4 r8 d ~ | -e4. r8 | +[c c c ] f ( | +) c4.-> f8 ( | +) c4.-> r8 | +r4 r8 f8 ( | +) e!4. c8 \f ( | +) f4.-> c8 ( | % slur added +) f4.-> r8 | +r4 r8 d ( | +) e4. r8 | R2 | r4 r8 c \p | [c-. \< d-. d-. e-. ] | [ \! e-. f-. f-. ] r | fis4. \f d,8-. | -[g-. a-. bes-. ] e! ~ | -g4. \f g8 ~ | -e4. e8 ~ | -f r c4-> ~ | +[g-. a-. bes-. ] e! ( | +) g4. \f g8 ( | +) e4. e8 ( | +) f r c4-> ~ | c c-> ~ | -c d ~ | -e r8 c ~ | -f4 c~ | +c d ( | +) e r8 c ( | +) f4 c~ | c c~ | -c d ~ | -e r8 c ~ | -f4 c~ | +c d ( | +) e r8 c ( | +) f4 c~ | c c~ | c r | R2*5 | -es2 \p \> ( ~ | -\! d4 \< \! ) des | +es2 \p \> ( ( | +) \! d4 \< \! ) des | c \f ( bes | a b | ) c r | @@ -1004,35 +1004,35 @@ a8-. \p r r4 | g8-. r r4 | R2*4 | a2 \p \< ~ | -a4 ~ \! gis8 g ~ | -c4. \fz c8 \> | +a4 () \! gis8 g ( | +) c4. \fz c8 \> | [c c \! c ] r8 | R2*2 | es2 \p \< ~ | -\! es4. d8 \f ~ | -f,4. bes8 ~ | -d,4. c'8 ~ | -c,4. c'8 ~ | -c,4. bes'8 ~ | -a4 r8 c~ | -d4 ~ c8 bes ~ | -a4 r8 c~ | -d4 ~ c8 d ~ | -g,4. g'8 ~ | -c,4. c,8 | +\! es4. d8 \f ( | +) f,4. bes8 ( | +) d,4. c'8 ( | +) c,4. c'8 ( | +) c,4. bes'8 ( | +) a4 r8 c( | +) d4 () c8 bes ( | +) a4 r8 c( | +) d4 () c8 d ( | +) g,4. g'8 ( | +) c,4. c,8 | [f-. c-. f-. c-. ] | [f-. c-. f-. c-. ] | f-. r c'-. r | c-. r c-. r | [c16 ( d c d][c d c d] | [c16 d c d][c d c d] | -) c4 r8 c ~ | -f4 r8 c ~ | -f,4 r8 c' ~ | -f4 r8 c ~ | -f,2 ~ | -f ~ | -c'4 \fz r^\fermata +) c4 r8 c ( | +) f4 r8 c ( | +) f,4 r8 c' ( | +) f4 r8 c ( | +) f,2 ~ | +f ( | +) c'4 \fz r^\fermata } oboehelp=\notes\relative c'' { diff --git a/scripts/abc-2-ly.py b/scripts/abc-2-ly.py index f1e5dd9ab7..6d3af3a519 100644 --- a/scripts/abc-2-ly.py +++ b/scripts/abc-2-ly.py @@ -7,16 +7,20 @@ # (not finished.) # -name = 'abc-to-ly' +program_name = 'abc-to-ly' version = '0.1' - +import __main__ import getopt import sys import re import string + + header = {} global_voice_stuff = [] default_len = 4 +global_key = [0] * 7 # UGH + def dump_header (hdr): @@ -26,20 +30,10 @@ def dump_header (hdr): print '};' def set_default_length (s): - m = re.match ('1/(.*)$', s) + m = re.search ('1/([0-9]+)', s) if m: - default_len = string.atoi ( m.group (1)) + __main__.default_len = string.atoi ( m.group (1)) -def parse_timesig (s): - m = re.match ('^M: *(.*)$', s) - if m: - print '\meter %s; ' % m.group (1) - -def parse_key (s): - m = re.match ('^K: *(.*)$', s) - if m: - print '\key %s; ' % m.group (1) - def gulp_file(f): try: i = open(f) @@ -56,6 +50,104 @@ def gulp_file(f): return s +# pitch manipulation. Tuples are (name, alteration). +# 0 is (central) C. Alteration -1 is a flat, Alteration +1 is a sharp +# pitch in semitones. +def semitone_pitch (tup): + p =0 + + t = tup[0] + p = p + 12 * (t / 7) + t = t % 7 + + if t > 2: + p = p- 1 + + p = p + t* 2 + tup[1] + return p + +def fifth_above_pitch (tup): + (n, a) = (tup[0] + 4, tup[1]) + + difference = 7 - (semitone_pitch ((n,a)) - semitone_pitch (tup)) + a = a + difference + + return (n,a) + +def sharp_keys (): + p = (0,0) + l = [] + k = 0 + while 1: + l.append (p) + (t,a) = fifth_above_pitch (p) + if semitone_pitch((t,a)) % 12 == 0: + break + + p = (t % 7, a) + return l + +def flat_keys (): + p = (0,0) + l = [] + k = 0 + while 1: + l.append (p) + (t,a) = quart_above_pitch (p) + if semitone_pitch((t,a)) % 12 == 0: + break + + p = (t % 7, a) + return l + +def quart_above_pitch (tup): + (n, a) = (tup[0] + 3, tup[1]) + + difference = 5 - (semitone_pitch ((n,a)) - semitone_pitch (tup)) + a = a + difference + + return (n,a) + + +def compute_key (k): + k = string.lower (k) + intkey = (ord (k[0]) - ord('a') + 5) % 7 + intkeyacc =0 + k = k[1:] + + if k and k[0] == 'b': + intkeyacc = -1 + k = k[1:] + elif k and k[0] == '#': + intkeyacc = 1 + k = k[1:] + + keytup = (intkey, intkeyacc) + + sharp_key_seq = sharp_keys () + flat_key_seq = flat_keys () + + accseq = None + accsign = 0 + if keytup in sharp_key_seq: + accsign = 1 + key_count = sharp_key_seq.index (keytup) + accseq = map (lambda x: (4*x -1 ) % 7, range (1, key_count + 1)) + + elif keytup in flat_key_seq: + accsign = -1 + key_count = flat_key_seq.index (keytup) + accseq = map (lambda x: (3*x + 3 ) % 7, range (1, key_count + 1)) + else: + raise "Huh" + + key_table = [0] * 7 + for a in accseq: + key_table[a] = key_table[a] + accsign + + + return key_table + def try_parse_header_line (ln): m = re.match ('^(.): *(.*)$', ln) @@ -67,6 +159,8 @@ def try_parse_header_line (ln): if g == 'M': global_voice_stuff.append ('\\time %s;' % a) if g == 'K': + __main__.global_key =compute_key (a)# ugh. + global_voice_stuff.append ('\\key %s;' % a) if g == 'O': header ['origin'] = a @@ -87,9 +181,44 @@ def try_parse_header_line (ln): return m +def pitch_to_mudela_name (name, acc): + s = '' + if acc < 0: + s = 'es' + acc = -acc + elif acc > 0: + s = 'is' + + if name > 4: + name = name -7 + return chr (name + ord('c')) + s * acc + +def octave_to_mudela_quotes (o): + s ='' + if o < 0: + o = -o + s=',' + else: + s ='\'' -# WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP ! + return s * o + +def parse_num (str): + durstr = '' + while str[0] in "1234567890": + durstr = durstr + str[0] + str = str[1:] + + n = None + if durstr: + n =string.atoi (durstr) + return (str,n) + +def duration_to_mudela_duration (multiply_tup, defaultlen): + base = 1 + +# WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP ! def try_parse_note (str): mud = '' @@ -98,7 +227,7 @@ def try_parse_note (str): slur_begin = 1 str = str[1:] - acc = None + acc = 0 if str[0] in '^=_': c = str[0] str = str[1:] @@ -117,7 +246,7 @@ def try_parse_note (str): notename = 0 if str[0] in "abcdefg": - notename = ord(str[0]) - ord('a') + notename = (ord(str[0]) - ord('a') + 5)%7 str = str[1:] else: return str # failed; not a note! @@ -128,20 +257,24 @@ def try_parse_note (str): while str[0] == '\'': octave = octave + 1 str = str[1:] - divide =0 + + num = 0 + den = 0 + + (str, num) = parse_num (str) + if not num: + num = 1 + if str[0] == '/': divide =1 str = str[1:] - durstr = '' - while str[0] in "1234567890": - durstr = durstr + str[0] - str = str[1:] + (str, den) =parse_num (str) - duration_mult = 1 - if durstr: - duration_mult = string.atoi (durstr) + if not den: den = 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) - slur_end =0 if str[0] == ')': slur_begin = 1 @@ -191,7 +324,7 @@ def parse_file (fn): def identify(): - print '%s %s' % (name, version) + print '%s %s' % (program_name, version) def help (): print r""" @@ -201,6 +334,8 @@ says huh when confused. Does not do chords. Go ahead and fix me. -h, --help this help. """ + + identify() (options, files) = getopt.getopt (sys.argv[1:], 'h', ['help']) diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index 53e020c5bb..e3b42ffa8e 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -63,7 +63,7 @@ class Input: for i in [''] + Props.get('include')[0:]: ifile = os.path.join(i,file) - for j in ['','.ly','.fly', 'sly']: + for j in ['','.ly','.fly', '.sly']: jfile = ifile+j try: this.__fd = open( jfile, 'r' ) -- 2.39.2