From: fred Date: Tue, 26 Mar 2002 21:50:28 +0000 (+0000) Subject: lilypond-1.1.49 X-Git-Tag: release/1.5.59~2405 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d9ac03706f2e674523c8dd767844ee69c89030b4;p=lilypond.git lilypond-1.1.49 --- diff --git a/Documentation/tex/lilypond-regtest.doc b/Documentation/tex/lilypond-regtest.doc index 6fcd8b45a0..bc70c38b3d 100644 --- a/Documentation/tex/lilypond-regtest.doc +++ b/Documentation/tex/lilypond-regtest.doc @@ -85,6 +85,13 @@ numberOfStaffLines. Ledger lines both on note heads and rests are adjusted. \mudelafile{number-staff-lines.fly} +\section{Spacing} + +In a limited number of cases, LilyPond corrects for optical spacing +effects. In this example, space for opposite pointed stems is adjusted + +\mudelafile{stem-spacing.sly} + \section{Global stuff} Markings that are attached to (invisible) barlines are diff --git a/Documentation/tex/refman.yo b/Documentation/tex/refman.yo index 5711ca323b..1ab6933237 100644 --- a/Documentation/tex/refman.yo +++ b/Documentation/tex/refman.yo @@ -533,14 +533,14 @@ e' ~ e' ~ It is possible to create beams and slurs that cross staffs by switching the context: mudela(fragment,verbatim,center)( -< +\context PianoStaff < \context Staff=one \notes\relative c'{ \stemup [c8 c \translator Staff=two \stemup c c] \translator Staff=one d4( \translator Staff=two )a4 } -\context Staff=two \notes{ \clef bass;} +\context Staff=two \notes{ \clef bass; s1} > ) diff --git a/TASKS b/TASKS index b52bec1a45..ef7ad3d29a 100644 --- a/TASKS +++ b/TASKS @@ -5,7 +5,7 @@ WHAT IS MUTOPIA? Mutopia is an archive of public domain music, free for all to download, modify and redistribute. It should be based on free -software. It is similar in spirit to the gutenberg archive. +software. It is similar in spirit to the Gutenberg archive. @@ -15,21 +15,16 @@ WHAT NEEDS TO BE DONE - setup submission guidelines, -- acquire mutopia.org domain. - -- setup FTP server - -- cooperate with ABC folks, ftp.gmd.de +- setup FTP/Web server WHO DO WE NEED -Volunteers that want to setup and maintain a website and FTP site. - -Volunteers with enough legal knowledge to write submission guidelines. +Volunteers that want to setup, host and maintain a website and FTP +site. -A project leader. +Volunteers to write submission guidelines, and copyright FAQs. @@ -44,7 +39,7 @@ enough time to take up the task of setting up Mutopia Signed -Han-Wen Nienhys +Han-Wen Nienhuys Jan Nieuwenhuizen [other bigwigs?] diff --git a/TODO b/TODO index ee05f34ea8..3ad59da047 100644 --- a/TODO +++ b/TODO @@ -9,8 +9,8 @@ Most of the items are marked in the code as well Grep for TODO and ugh/ugr/urg. .* BUGS -. * junk separate mudela versioning. -. * petite-ouverture time sig size. +. * junk separate mudela versioning. +. * indent = 0.0 with linewidth=-1.0 . * PostScript . * header for PS enteredby = "bla " . * ps/lily.ps see comments. @@ -63,7 +63,6 @@ I understand your point. It should be changed. . * fix MIDI . * \shape 1st dim skipped? . * turn slope-damping on/off -. * tremolo stuff: tremolo over whole note. . * We need feta-din*.mf files for more sizes than 10. . * fix dynamics decently, ie. use kerning & ligatures. . * dots & rest collisions? @@ -91,7 +90,7 @@ specify the third. Should there be? note + circle = note + 1/4 of its length -5 the circle is like a dot that's not filled in. for example, on + the circle is like a dot that's not filled in. for example, on page three, the c-sharp on the second line should be a quarter with a circle, not a quarter tied to a sixteenth. is this at all possible with lily? @@ -100,7 +99,6 @@ specify the third. Should there be? . * repeat engraver, gallina.ly . * Matanya's tips: -. * spacing for prefatory matter . * accidentals closer to note head . * to space the staffs/staffgroups contained in the score. . * heavier beams? @@ -111,14 +109,11 @@ specify the third. Should there be? . * Slur . * Rhythmic_grouping . * Duration -. * Collision -. * Rest_collision -. * clef grav prop's +. * clef engraver . * parser .* TODO before 1.2 . * Morally pure LilyPond. -. * Remove mutopia ramblings. . * Remove non-free software links. . * Remove meta article LilyPond. . * break priority setting from SCM. @@ -191,10 +186,6 @@ compilation. . * add new glyphs to font.ly . * formatting of input stuff. . * \notes{ a \< b \cr } vs \notes{ a \< b \! } -. * 'hinterfleisch' before bar (e.g. wtk1-fugue2)? -. * Summary of minor spelling irregularities: -. * capitalization/use of underscores in property names -. * fix SkipBars -> skipBars . * broken scripts: lbheel = \script { "bheel" 0 0 -1 0 0 } rbheel = \script { "bheel" 0 0 1 0 0 } @@ -308,6 +299,8 @@ touching it. .* 3RD PARTY BUGS . * GNU diff 2.7: diff -rN does not see a new directory with empty file +. * mf-to-table -> add space before ; in AFM output. (-> check AFM + spec. Is this a bug in afm2tfm?) . * check out GCC signatures? . * glibc 2.0: f = fopen ("/dev/null", "r") diff --git a/input/bugs/Overture.ly b/input/bugs/Overture.ly index 1f6f514837..99c37f13aa 100644 --- a/input/bugs/Overture.ly +++ b/input/bugs/Overture.ly @@ -4,7 +4,7 @@ composer = "Johann Christoph Faber"; piece = "1. Overture"; } -\version "1.0.20"; +\version "1.0.21"; global=\notes{ \time 2/2; diff --git a/input/bugs/nobreak.ly b/input/bugs/nobreak.ly new file mode 100644 index 0000000000..0636efd789 --- /dev/null +++ b/input/bugs/nobreak.ly @@ -0,0 +1,2 @@ + +\score { \context Staff \notes { c1 \nobreak c1 }} diff --git a/input/example-3.ly b/input/example-3.ly index 7bbed535f0..950f45ab57 100644 --- a/input/example-3.ly +++ b/input/example-3.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; one = \notes\relative c{ c'' d e f diff --git a/input/just-friends.ly b/input/just-friends.ly index 60443d076f..b08f6f3176 100644 --- a/input/just-friends.ly +++ b/input/just-friends.ly @@ -57,4 +57,4 @@ of a certain tune (Jazz, Real Book, for example), like } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/keys.ly b/input/keys.ly index f203dedaf1..66e95fd41b 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; blah = \notes { diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 376fadc8ba..e88af13ef3 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -10,7 +10,7 @@ copyright = "public domain"; Tested Features: example file with comments %} -\version "1.0.20"; +\version "1.0.21"; % the % is a comment. diff --git a/input/part.ly b/input/part.ly index e54ca2a201..a0f60f576b 100644 --- a/input/part.ly +++ b/input/part.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; part = \notes { c-1 c c c r1*3 diff --git a/input/pedal.ly b/input/pedal.ly index bfd90fea41..514fee0325 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -28,7 +28,7 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "1.0.20"; +\version "1.0.21"; \score{ \notes { diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index a8c26b71f6..1742c1286e 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -23,7 +23,7 @@ * organ staff... %} -\version "1.0.20"; +\version "1.0.21"; @@ -203,13 +203,13 @@ breakmusic = \notes { \VoiceContext \name "VoiceThree"; verticalDirection = "1"; - hshift = "1"; + horizontalNoteShift = "1"; } \translator { \VoiceContext \name "VoiceFour"; verticalDirection = "-1"; - hshift = "1"; + horizontalNoteShift = "1"; } \translator { \StaffContext diff --git a/input/rhythm.ly b/input/rhythm.ly index e8ab4e3de6..b0de5a90bd 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -7,7 +7,7 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; -\version "1.0.20"; +\version "1.0.21"; ritme = \notes\transpose c'' { \time 4/4; diff --git a/input/scales.ly b/input/scales.ly index 4b00ac05be..18ae6a9844 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -16,7 +16,7 @@ copyright = "public domain"; % scales with accents. % -\version "1.0.20"; +\version "1.0.21"; blah = \notes { \time 6/8; \transpose c { diff --git a/input/scripts.ly b/input/scripts.ly index 598e45bc38..a78e1f8c25 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; blah = \notes{ \transpose c'' { diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly index c018bd523c..49a0e4f3c9 100644 --- a/input/star-spangled-banner.ly +++ b/input/star-spangled-banner.ly @@ -118,4 +118,4 @@ global = \notes { } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/alphabet.ly b/input/test/alphabet.ly index acb8b7ab87..361ec08752 100644 --- a/input/test/alphabet.ly +++ b/input/test/alphabet.ly @@ -121,4 +121,4 @@ xxx\break } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/auto-staff-switch.ly b/input/test/auto-staff-switch.ly index d176fbc7f2..21cb6c5922 100644 --- a/input/test/auto-staff-switch.ly +++ b/input/test/auto-staff-switch.ly @@ -31,4 +31,4 @@ }} -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly index 8990f46868..0eebd74cab 100644 --- a/input/test/bar-scripts.ly +++ b/input/test/bar-scripts.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; onestaff = \context Staff = foo\notes { \property Staff.instr = instr diff --git a/input/test/beam-chord.ly b/input/test/beam-chord.ly index 3ad0189aeb..d9553639b5 100644 --- a/input/test/beam-chord.ly +++ b/input/test/beam-chord.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes\transpose c'{ diff --git a/input/test/beam-interstaff.ly b/input/test/beam-interstaff.ly index 4554160c43..41e0adc669 100644 --- a/input/test/beam-interstaff.ly +++ b/input/test/beam-interstaff.ly @@ -30,4 +30,4 @@ } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/beam-isknee.ly b/input/test/beam-isknee.ly index f71167fdab..342b553526 100644 --- a/input/test/beam-isknee.ly +++ b/input/test/beam-isknee.ly @@ -21,4 +21,4 @@ } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly index 6d69d96723..6d2abe6cb4 100644 --- a/input/test/beam-pos.ly +++ b/input/test/beam-pos.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes\transpose c''{ diff --git a/input/test/beams.ly b/input/test/beams.ly index 2e0cbb43ca..819c9cdffe 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -6,7 +6,7 @@ copyright = "PD"; TestedFeatures = "beams and beamflags"; } -\version "1.0.20"; +\version "1.0.21"; \score{ < diff --git a/input/test/broken.ly b/input/test/broken.ly index 83b3e26ff7..7c87350096 100644 --- a/input/test/broken.ly +++ b/input/test/broken.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests Feta embedded slurs" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.20"; +\version "1.0.21"; shortlong = \notes{ c4()c( c c | diff --git a/input/test/chord-inversion.ly b/input/test/chord-inversion.ly index 29fae53e31..e2d63ff9c2 100644 --- a/input/test/chord-inversion.ly +++ b/input/test/chord-inversion.ly @@ -22,4 +22,4 @@ inversions = \notes\transpose c''\chords{ > } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/chord-table.ly b/input/test/chord-table.ly index 25ffa4bc78..e31e92a57e 100644 --- a/input/test/chord-table.ly +++ b/input/test/chord-table.ly @@ -41,4 +41,4 @@ tab = \notes\transpose c'''\chords{ } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/chords.ly b/input/test/chords.ly index 06cf21a60a..dda0de434d 100644 --- a/input/test/chords.ly +++ b/input/test/chords.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; %{ Would this be acceptable/good enough/convenient for entry? diff --git a/input/test/clefs.ly b/input/test/clefs.ly index 4050cbfcd5..de74c39138 100644 --- a/input/test/clefs.ly +++ b/input/test/clefs.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score { \notes{ diff --git a/input/test/collisions.ly b/input/test/collisions.ly index c938d5bd49..9c8e46f3d8 100644 --- a/input/test/collisions.ly +++ b/input/test/collisions.ly @@ -5,7 +5,7 @@ enteredby = "HWN,JCN"; copyright = "public domain"; Tested = "test the Collision resolution "; } -\version "1.0.20"; +\version "1.0.21"; twovoice = \context Staff \notes < \context Voice=i { \stemdown c4 d e f g2~ g4 a [c8 d e f] c2| } @@ -20,7 +20,7 @@ twovoicesteminvert = \context Staff \notes < threevoice = \context Staff \notes < \context Voice=i { \stemup g4 f e f g a g2 } - \context Voice=ii { \stemup \property Voice.hshift = 1 e2 e2 e2 e2 } + \context Voice=ii { \stemup \property Voice.horizontalNoteShift = 1 e2 e2 e2 e2 } \context Voice=iii { \stemdown c4 d e d c d es } > diff --git a/input/test/defaultbars.ly b/input/test/defaultbars.ly index 5c94ae07bf..664d0bc54d 100644 --- a/input/test/defaultbars.ly +++ b/input/test/defaultbars.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score { diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly index dc382e07a6..f0105edf90 100644 --- a/input/test/denneboom.ly +++ b/input/test/denneboom.ly @@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes"; \include "paper20.ly" -\version "1.0.20"; +\version "1.0.21"; oden = \lyrics{ O8 | diff --git a/input/test/dotted-slur.ly b/input/test/dotted-slur.ly index 6b42c3e8f0..1504b5bc12 100644 --- a/input/test/dotted-slur.ly +++ b/input/test/dotted-slur.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes{ diff --git a/input/test/extender.ly b/input/test/extender.ly index ea0587909d..643acb4fcd 100644 --- a/input/test/extender.ly +++ b/input/test/extender.ly @@ -5,4 +5,4 @@ > } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/extra-staff.ly b/input/test/extra-staff.ly index 829c0929b9..b12ab289f5 100644 --- a/input/test/extra-staff.ly +++ b/input/test/extra-staff.ly @@ -42,4 +42,4 @@ extra-staff.ly: } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/find-quarts.ly b/input/test/find-quarts.ly index a9992e2dff..8d88c31f39 100644 --- a/input/test/find-quarts.ly +++ b/input/test/find-quarts.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes \relative c { diff --git a/input/test/font.ly b/input/test/font.ly index c6b011f481..dd65dc0756 100644 --- a/input/test/font.ly +++ b/input/test/font.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.20"; +\version "1.0.21"; \include "font-body.ly" \score{ diff --git a/input/test/font16.ly b/input/test/font16.ly index 6a5c020a00..6701a291be 100644 --- a/input/test/font16.ly +++ b/input/test/font16.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.20"; +\version "1.0.21"; \include "paper16.ly" \include "font-body.ly" diff --git a/input/test/font20.ly b/input/test/font20.ly index c83061d519..d342c427ea 100644 --- a/input/test/font20.ly +++ b/input/test/font20.ly @@ -17,5 +17,5 @@ TestedFeatures = gourlay_maxmeasures =5.; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly index ab4414da70..f7321e04a4 100644 --- a/input/test/gourlay.ly +++ b/input/test/gourlay.ly @@ -4,7 +4,7 @@ copyright = "PD"; TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "1.0.20"; +\version "1.0.21"; %{ diff --git a/input/test/grace.ly b/input/test/grace.ly index 0261511d6e..f74f3b14b5 100644 --- a/input/test/grace.ly +++ b/input/test/grace.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ < diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly index 5f2ebd04e2..58a1366b38 100644 --- a/input/test/hara-kiri.ly +++ b/input/test/hara-kiri.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; toeter_i = \notes\relative c <{ \property Staff.instrument = "Toeters" diff --git a/input/test/incipit.ly b/input/test/incipit.ly index 202b65df42..73bd6aec3b 100644 --- a/input/test/incipit.ly +++ b/input/test/incipit.ly @@ -6,7 +6,7 @@ /Mats B %} -\version "1.0.20"; +\version "1.0.21"; incipit = \notes\relative c'{ diff --git a/input/test/keys.ly b/input/test/keys.ly index e35be1b040..0f0c3c7ec1 100644 --- a/input/test/keys.ly +++ b/input/test/keys.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; %{ test key itemv breaking diff --git a/input/test/knee.ly b/input/test/knee.ly index d595ebe82a..37de7fa18d 100644 --- a/input/test/knee.ly +++ b/input/test/knee.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes\relative c'{ [c16 \stemdown c'' \stemboth c,, d] diff --git a/input/test/mark.ly b/input/test/mark.ly index 5dd835a96d..dae0e41ddd 100644 --- a/input/test/mark.ly +++ b/input/test/mark.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; global = \notes { s1 | \mark "A"; diff --git a/input/test/memory.ly b/input/test/memory.ly index b49a9e028e..90f508f2fb 100644 --- a/input/test/memory.ly +++ b/input/test/memory.ly @@ -11,5 +11,5 @@ bla = \notes { > \paper { Gourlay_maxmeaures = 2.; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly index 2b30a3e811..aaf3fd8c68 100644 --- a/input/test/multi-rest.ly +++ b/input/test/multi-rest.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; voice_one = \notes\transpose c''{ \stemup R1 * 2 | f'4-. r r2 | R1 * 3 | diff --git a/input/test/noteheadstyle.ly b/input/test/noteheadstyle.ly index 852d062afe..3db8223a4b 100644 --- a/input/test/noteheadstyle.ly +++ b/input/test/noteheadstyle.ly @@ -26,4 +26,4 @@ c4 c2 c8 c16 c16 c1 } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/notemode-chords.ly b/input/test/notemode-chords.ly index 37d6c8ac29..b8652f0582 100644 --- a/input/test/notemode-chords.ly +++ b/input/test/notemode-chords.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes \transpose c''{ diff --git a/input/test/orchestscore.ly b/input/test/orchestscore.ly index 411d7beb95..2887bd11ec 100644 --- a/input/test/orchestscore.ly +++ b/input/test/orchestscore.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; m = \notes \relative c''{ c1 | c2 c | c c | c c | c c | c c | c c | c c | diff --git a/input/test/ossia.ly b/input/test/ossia.ly index a43c1ed64b..059cc24019 100644 --- a/input/test/ossia.ly +++ b/input/test/ossia.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; \score { diff --git a/input/test/rest-collision.ly b/input/test/rest-collision.ly index e509994d67..607f1daf2b 100644 --- a/input/test/rest-collision.ly +++ b/input/test/rest-collision.ly @@ -34,4 +34,4 @@ restsII = \context Staff \notes { } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/score-bar-scripts.ly b/input/test/score-bar-scripts.ly index a43bb3d02b..4d5ab9466f 100644 --- a/input/test/score-bar-scripts.ly +++ b/input/test/score-bar-scripts.ly @@ -1,7 +1,7 @@ -\version "1.0.20"; +\version "1.0.21"; onestaff = \context Staff = foo\notes { \property Staff.instr = instr diff --git a/input/test/sleur.ly b/input/test/sleur.ly index e3317a3312..d74f328c4b 100644 --- a/input/test/sleur.ly +++ b/input/test/sleur.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests Feta embedded slurs" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.20"; +\version "1.0.21"; shortlong = \notes{ c4()c( c c | @@ -52,7 +52,6 @@ over = \notes\transpose c'{ } under = \notes\transpose c'{ - \stemdown f'( \stemboth d d \stemdown )f' f'( \stemboth c c \stemdown )f' @@ -77,7 +76,6 @@ under = \notes\transpose c'{ } eccentric = \notes\transpose c'{ - \stemup \times 4/7 { f( a' f f f f )f } | \times 4/7 { f( f f f f a' )f } | diff --git a/input/test/slur-bug.ly b/input/test/slur-bug.ly index 94b53b3560..4814daaac7 100644 --- a/input/test/slur-bug.ly +++ b/input/test/slur-bug.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; % bug % excentric slur can't handle this ... diff --git a/input/test/slur-damping.ly b/input/test/slur-damping.ly index 7fda627819..313d75a777 100644 --- a/input/test/slur-damping.ly +++ b/input/test/slur-damping.ly @@ -1,5 +1,5 @@ % test damping -\version "1.0.20"; +\version "1.0.21"; \score{ \notes\relative c'{ diff --git a/input/test/slur-interstaff.ly b/input/test/slur-interstaff.ly index 7fe0156d97..90d03844c9 100644 --- a/input/test/slur-interstaff.ly +++ b/input/test/slur-interstaff.ly @@ -38,4 +38,4 @@ } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/slur-swap.ly b/input/test/slur-swap.ly index 77a2194b79..13abcdd1a1 100644 --- a/input/test/slur-swap.ly +++ b/input/test/slur-swap.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; % urg, the direction of the slur gets swapped! \score{ diff --git a/input/test/slurs.ly b/input/test/slurs.ly index 78792b52f9..2bd6626572 100644 --- a/input/test/slurs.ly +++ b/input/test/slurs.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes\transpose c'{ diff --git a/input/test/spacing-2.ly b/input/test/spacing-2.ly index 8ad2b83875..9f0f43243c 100644 --- a/input/test/spacing-2.ly +++ b/input/test/spacing-2.ly @@ -33,4 +33,4 @@ source = "Petits Preludes et Fugues. Urtext. Editions Henry Lemoine, Paris."; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/spacing.ly b/input/test/spacing.ly index 4d90e75192..cecb18c9d8 100644 --- a/input/test/spacing.ly +++ b/input/test/spacing.ly @@ -6,7 +6,7 @@ copyright = "public domain"; TestedFeatures = "This file tests various spacings"; } -\version "1.0.20"; +\version "1.0.21"; multipart = \notes \relative c'{ \context StaffGroup < diff --git a/input/test/span-bars.ly b/input/test/span-bars.ly index dd60a13a8b..37d13ef68a 100644 --- a/input/test/span-bars.ly +++ b/input/test/span-bars.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; nt = \notes { c1 \break c1 c1 } stuff = \notes \relative c'' < \context Staff = stone { \nt } diff --git a/input/test/staff-margin.ly b/input/test/staff-margin.ly index df215a6cd5..ca8e9dea33 100644 --- a/input/test/staff-margin.ly +++ b/input/test/staff-margin.ly @@ -1,6 +1,6 @@ -\version "1.0.20"; +\version "1.0.21"; \score { diff --git a/input/test/staff-side-slur.ly b/input/test/staff-side-slur.ly index 65e3d68065..ff92e5b0b3 100644 --- a/input/test/staff-side-slur.ly +++ b/input/test/staff-side-slur.ly @@ -18,4 +18,4 @@ } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/staff-size.ly b/input/test/staff-size.ly index 144f638fc9..adf8d50c26 100644 --- a/input/test/staff-size.ly +++ b/input/test/staff-size.ly @@ -14,4 +14,4 @@ > \paper { linewidth = -1.; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/stem-spacing.sly b/input/test/stem-spacing.sly new file mode 100644 index 0000000000..0d92baf57f --- /dev/null +++ b/input/test/stem-spacing.sly @@ -0,0 +1,2 @@ + +\time 12/4; c''4 c c c a f' f, a diff --git a/input/test/stem-tremolo.ly b/input/test/stem-tremolo.ly index 7804771d86..6e76092aad 100644 --- a/input/test/stem-tremolo.ly +++ b/input/test/stem-tremolo.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; \score{ \notes \transpose c'''{ \stemup diff --git a/input/test/stem.ly b/input/test/stem.ly index 978caa5555..a728939ef8 100644 --- a/input/test/stem.ly +++ b/input/test/stem.ly @@ -8,7 +8,7 @@ of beams"; } -\version "1.0.20"; +\version "1.0.21"; beamintervals = \notes{ \time 7/4; diff --git a/input/test/tchaikovsky.ly b/input/test/tchaikovsky.ly index 9cd65c31c1..6a0dc872ea 100644 --- a/input/test/tchaikovsky.ly +++ b/input/test/tchaikovsky.ly @@ -7,7 +7,7 @@ enteredby = "Maarten Storm"; instrument= "Violoncello"; } -\version "1.0.20"; +\version "1.0.21"; % this is an example of extreme dynamics diff --git a/input/test/thumb.ly b/input/test/thumb.ly index 748e754b83..57dd37d821 100644 --- a/input/test/thumb.ly +++ b/input/test/thumb.ly @@ -7,7 +7,7 @@ % the thumb-script is used in cello music to indicate a note that should % be played with your thumb. -\version "1.0.20"; +\version "1.0.21"; \score { \notes \relative c'' { [ <)b_\thumb b'-3> diff --git a/input/test/tie-bug.ly b/input/test/tie-bug.ly index 1307452524..8df3c3c5a3 100644 --- a/input/test/tie-bug.ly +++ b/input/test/tie-bug.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; % middle tie is wrong diff --git a/input/test/tie.ly b/input/test/tie.ly index 61944f4026..61f4c512a3 100644 --- a/input/test/tie.ly +++ b/input/test/tie.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; tie = \notes\transpose c''{ diff --git a/input/test/title.ly b/input/test/title.ly index 91fa42cbd3..6058ef4d0a 100644 --- a/input/test/title.ly +++ b/input/test/title.ly @@ -10,7 +10,7 @@ source = "urtext"; instrument= "Instrument"; } -\version "1.0.20"; +\version "1.0.21"; \score{ \notes diff --git a/input/test/transposition.ly b/input/test/transposition.ly index 2271026b71..72efd42818 100644 --- a/input/test/transposition.ly +++ b/input/test/transposition.ly @@ -22,7 +22,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; vOne = \notes \relative c''{ \clef"violin"; diff --git a/input/test/tup.ly b/input/test/tup.ly index aaa005aeec..06b9dc8458 100644 --- a/input/test/tup.ly +++ b/input/test/tup.ly @@ -8,4 +8,4 @@ } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/updown.fly b/input/test/updown.fly index 69ba825f68..0acf70455b 100644 --- a/input/test/updown.fly +++ b/input/test/updown.fly @@ -8,4 +8,4 @@ {\voicetwo c}> -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/vertical-align.ly b/input/test/vertical-align.ly index 52e286e1c2..8295ae22ef 100644 --- a/input/test/vertical-align.ly +++ b/input/test/vertical-align.ly @@ -1,5 +1,5 @@ -\version "1.0.20"; +\version "1.0.21"; \score { \notes < diff --git a/input/test/vertical-text.ly b/input/test/vertical-text.ly index ec9caaf371..f6b98c1072 100644 --- a/input/test/vertical-text.ly +++ b/input/test/vertical-text.ly @@ -15,4 +15,4 @@ } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/test/wtk-huh.ly b/input/test/wtk-huh.ly index c9371664a4..5b38a572b0 100644 --- a/input/test/wtk-huh.ly +++ b/input/test/wtk-huh.ly @@ -21,4 +21,4 @@ What's supposed to be demonstrated here? } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/input/tril.ly b/input/tril.ly index b0779db193..e513f364cf 100644 --- a/input/tril.ly +++ b/input/tril.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests trills" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "1.0.20"; +\version "1.0.21"; \score{ \notes{ diff --git a/lily/bar.cc b/lily/bar.cc index 3c8f78452a..ac4f39243c 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -43,7 +43,7 @@ Bar::get_bar_size () const Molecule* Bar::do_brew_molecule_p () const { - Molecule *output = new Molecule (lookup_l ()->bar (type_str_, get_bar_size ())); + Molecule *output = new Molecule (lookup_l ()->bar (type_str_, get_bar_size (), paper_l ())); return output; } diff --git a/lily/break.cc b/lily/break.cc index 131294f200..afe439cd5d 100644 --- a/lily/break.cc +++ b/lily/break.cc @@ -162,10 +162,10 @@ Break_algorithm::solve () const Array h= do_solve (); if (approx_stats_.count_i_) - *mlog << '\n' << _f ("approximated: %s", approx_stats_.str ()) << endl; + *mlog << '\n' << _f ("approximated %s", approx_stats_.str ()) << endl; if (exact_stats_.count_i_) - *mlog << _f ("calculated exactly: %s", exact_stats_.str ()) << endl; - *mlog << _f ("time: %.2f seconds", timer.read ()) << endl; + *mlog << _f ("calculated %s exactly", exact_stats_.str ()) << endl; + *mlog << _f ("elapsed time %.2f seconds", timer.read ()) << endl; return h; } diff --git a/lily/collision.cc b/lily/collision.cc index 1b1f1be105..1ddff7d2f7 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -23,145 +23,131 @@ Collision::add_column (Note_column* ncol_l) add_element (ncol_l); add_dependency (ncol_l); } -/** - should derive of Array. - */ -static -int idx (int dir, bool h_shift_b) -{ - assert (abs (dir) == 1); - int j = dir > 0 ? 0 : 3; - if (h_shift_b) - j += dir; - return j; -} + /** This complicated routine moves note columns around horizontally to ensure that notes don't clash. This should be done better, probably. - This routine is dedicated to Stine Randmael :-) - + TODO: forced hshift + */ void Collision::do_pre_processing() { - if (clash_l_arr_.size() <= 1) - return; - - /* - [stem up, stem up shifted, stem down shifted, stem down] - */ - Array clash_group_arr_a[4]; // TODO: use drul. - + Drul_array > clash_groups; + Drul_array > shifts; + for (int i=0; i < clash_l_arr_.size(); i++) { - Note_column* c_l = clash_l_arr_[i]; - Direction d = c_l->dir (); - if (!d) - { - warning (_ ("No stem direction set. Ignoring column in clash.")); - continue; - } - - SCM shift = c_l->remove_elt_property (horizontal_shift_scm_sym); - bool shift_b = (shift != SCM_BOOL_F); - clash_group_arr_a[idx (d, shift_b)].push (c_l); + clash_groups[clash_l_arr_[i]->dir ()].push (clash_l_arr_[i]); } - - for (int j=0; j < 4; j++) - { - if (clash_group_arr_a[j].size() > 1) - { - warning (_ ("Too many clashing notecolumns. Ignoring them.")); - return; - } - } + Direction d = UP; do { - if (!clash_group_arr_a[idx (d, false)].size()) - { - clash_group_arr_a[idx (d, false)] = clash_group_arr_a[idx (d, true)]; - clash_group_arr_a[idx (d, true)].clear(); - } - } - while (flip (&d) != UP); - + Array & shift (shifts[d]); + Link_array & clashes (clash_groups[d]); - Interval_t y_extent[4]; - Note_column * col_l_a[4]; - Real x_off [4]; + clashes.sort (Note_column::shift_compare); - for (int j =0 ; j < 4; j++) - { - if (clash_group_arr_a[j].size()) - col_l_a[j] = clash_group_arr_a[j][0]; - else - col_l_a[j] = 0; + for (int i=0; i < clashes.size (); i++) + { + SCM sh + = clashes[i]->remove_elt_property (horizontal_shift_scm_sym); - if (col_l_a[j]) + if (sh == SCM_BOOL_F) + shift.push (0); + else + shift.push (gh_scm2int (SCM_CDR (sh))); + } + + for (int i=1; i < shift.size (); i++) { - y_extent[j] = col_l_a[j]->head_positions_interval(); + if (shift[i-1] == shift[i]) + { + warning (_ ("Too many clashing notecolumns. Ignoring them.")); + return; + } } - - - x_off [j] = 0.0; } + while ((flip (&d))!= UP); + Drul_array< Array < Slice > > extents; + Drul_array< Array < Real > > offsets; + d = UP; do { - x_off[idx (d, true)] = d*0.5; + for (int i=0; i < clash_groups[d].size (); i++) + { + Slice s(clash_groups[d][i]->head_positions_interval ()); + s[LEFT] --; + s[RIGHT]++; + extents[d].push (s); + offsets[d].push (d * 0.5 * i); + } } - while (flip (&d) != UP); - - - // y_extent: smallest y-pos noteball interval containing all balls - // 4 (0..3) groups: stem up/down; shift on/off; - Interval_t middle (y_extent[idx (-1,0)][BIGGER], - y_extent[idx (1,0)][SMALLER]); - Interval_t open_middle (y_extent[idx (-1,0)][BIGGER]+1, y_extent[idx (1,0)][SMALLER]-1); + while ((flip (&d))!= UP); + do { - if (!open_middle.contains_b (y_extent[idx (d,true)])) - x_off[idx (d, true)] = d *1.0 ; - } while ((d *= -1) != 1); - + for (int i=1; i < clash_groups[d].size (); i++) + { + Slice prev =extents[d][i-1]; + prev.intersect (extents[d][i]); + if (prev.length ()> 0 || + (extents[-d].size () && d * (extents[d][i][-d] - extents[-d][0][d]) < 0)) + for (int j = i; j < clash_groups[d].size (); j++) + offsets[d][j] += d * 0.5; + } + } + while ((flip (&d))!= UP); - if (!middle.empty_b() - && middle.length() < 2 && col_l_a[idx (1,0)] && col_l_a[idx (-1,0)]) + /* + if the up and down version are close, and can not be merged, move + all of them again. */ + if (extents[UP].size () && extents[DOWN].size ()) { - // reproduction of bugfix at 3am ? - Note_head * nu_l= col_l_a[idx (1,0)]->head_l_arr_[0]; - Note_head * nd_l = col_l_a[idx (-1,0)]->head_l_arr_.top(); - if (! (nu_l->balltype_i_ == nd_l->balltype_i_ - && nu_l->dots_i_ == nd_l->dots_i_ && middle.length() == 0)) - { + Note_column *cu_l =clash_groups[UP][0]; + Note_column *cd_l =clash_groups[DOWN][0]; + Note_head * nu_l= cu_l->head_l_arr_[0]; + Note_head * nd_l = cd_l->head_l_arr_.top(); + int downpos = cd_l->head_positions_interval ()[SMALLER]; + int uppos = cu_l->head_positions_interval ()[BIGGER]; + + bool merge = + downpos == uppos + && nu_l->balltype_i_ == nd_l->balltype_i_ + && nu_l->dots_i_ == nd_l->dots_i_; + + /* + notes are close, but can not be merged. Shift + */ + if (abs(uppos - downpos) < 2 && !merge) do - { - x_off[idx (d, false)] -= d*0.5; - x_off[idx (d, true)] -= d*0.5; - } - while (flip (&d) != UP); - } + { + for (int i=0; i < clash_groups[d].size (); i++) + { + offsets[d][i] -= d * 0.5; + } + } + while ((flip (&d))!= UP); } Real wid_f = paper_l ()->note_width (); - for (int j=0; j < 4; j++) + do { - if (col_l_a[j]) + for (int i=0; i < clash_groups[d].size (); i++) { - Offset o (x_off[j] * wid_f, 0); - col_l_a[j]->translate (o); + clash_groups[d][i]->translate_axis (offsets[d][i]*wid_f, X_AXIS); } } + while (flip (&d) != UP); } - - void Collision::do_substitute_element_pointer (Score_element*o_l,Score_element*n_l) { diff --git a/lily/crescendo.cc b/lily/crescendo.cc index b499af90b6..1dbe94e3e4 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -52,7 +52,9 @@ Crescendo::get_symbol () const bool continued = broken[Direction (-grow_dir_)]; - return Molecule (lookup_l ()->hairpin (w_dim, grow_dir_ < 0, continued)); + Real height = paper_l()->staffheight_f () / 6; + + return Molecule (lookup_l ()->hairpin (w_dim, height, grow_dir_ < 0, continued)); } Molecule* diff --git a/lily/g-script.cc b/lily/g-script.cc index d08a76800b..5be3683831 100644 --- a/lily/g-script.cc +++ b/lily/g-script.cc @@ -16,6 +16,7 @@ #include "g-script.hh" #include "lookup.hh" #include "g-staff-side.hh" +#include "paper-def.hh" G_script::G_script () { @@ -46,7 +47,7 @@ G_script::get_molecule(Direction d) const } else if (key == ly_symbol ("accordion")) { - return lookup_l ()->accordion (SCM_CDR(s)); + return lookup_l ()->accordion (SCM_CDR(s), paper_l()->get_realvar(interline_scm_sym)); } else assert (false); diff --git a/lily/g-text-item.cc b/lily/g-text-item.cc index 6f54c2ad0a..6578cf8bb4 100644 --- a/lily/g-text-item.cc +++ b/lily/g-text-item.cc @@ -16,7 +16,7 @@ Molecule* G_text_item::do_brew_molecule_p () const { - Molecule a= paper_l ()->lookup_l(0)->text (style_str_,text_str_); + Molecule a= paper_l ()->lookup_l(0)->text (style_str_,text_str_, paper_l ()); return new Molecule (a); } diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index a4f60b00e1..e1b827e523 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -17,6 +17,7 @@ #include "box.hh" /** handy interface to symbol table + TODO: move this into GUILE? */ class Lookup { @@ -24,11 +25,11 @@ public: Lookup (); Lookup (Lookup const&); - Molecule simple_bar (String s, Real w) const; + Molecule simple_bar (String s, Real w, Paper_def*) const; Molecule accidental (int, bool cautionary) const; Molecule afm_find (String, bool warn=true) const; Molecule notehead (int, String) const; - Molecule bar (String, Real height) const; + Molecule bar (String, Real height, Paper_def*) const; Molecule beam (Real, Real, Real) const; Molecule clef (String) const; Molecule dashed_slur (Array controls, Real thick, Real dash) const; @@ -37,20 +38,17 @@ public: Molecule fill (Box b) const; Molecule filledbox (Box b) const; Molecule flag (int, Direction) const; - Molecule hairpin (Real width, bool decresc, bool continued) const; - Molecule plet (Real dy, Real dx, Direction dir) const; + Molecule hairpin (Real width, Real height, bool decresc, bool continued) const; + Molecule tuplet_bracket (Real dy, Real dx, Real thick,Real interline, Direction dir) const; Molecule rest (int, bool outside, String) const; - Molecule accordion (SCM arg) const; - Molecule stem (Real y1_pos, Real y2_pos) const; + Molecule accordion (SCM arg, Real interline_f) const; Molecule slur (Array controls) const; - Molecule text (String style, String text) const; + Molecule text (String style, String text, Paper_def*) const; Molecule staff_brace (Real dy) const; Molecule staff_bracket (Real dy) const; - Molecule volta (Real w, bool last_b) const; - Molecule special_time_signature (String, int,int) const; - Molecule time_signature (int n,int d) const; - - Paper_def * paper_l_; + Molecule volta (Real w, Real h, Real il, bool last_b) const; + Molecule special_time_signature (String, int,int, Paper_def*) const; + Molecule time_signature (int n,int d, Paper_def*) const; String font_name_; Adobe_font_metric * afm_l_; diff --git a/lily/include/ly-symbols.hh b/lily/include/ly-symbols.hh index 3c35d42e95..489bcc98e9 100644 --- a/lily/include/ly-symbols.hh +++ b/lily/include/ly-symbols.hh @@ -30,6 +30,7 @@ DECLARE_LY_SYMBOL(dashed); DECLARE_LY_SYMBOL(extremal); DECLARE_LY_SYMBOL(extra_space); DECLARE_LY_SYMBOL(dir_forced); +DECLARE_LY_SYMBOL(dir_list); DECLARE_LY_SYMBOL(extender_height); DECLARE_LY_SYMBOL(filledbox); DECLARE_LY_SYMBOL(fontsize); @@ -61,6 +62,7 @@ DECLARE_LY_SYMBOL(tuplet_thick); DECLARE_LY_SYMBOL(tuplet_visibility); DECLARE_LY_SYMBOL(visibility_lambda); DECLARE_LY_SYMBOL(volta); +DECLARE_LY_SYMBOL(void); DECLARE_LY_SYMBOL(volta_thick); diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh index b8d17a5708..e8fe19a0b1 100644 --- a/lily/include/note-column.hh +++ b/lily/include/note-column.hh @@ -21,6 +21,9 @@ protected: virtual void do_print () const; virtual void do_substitute_element_pointer (Score_element*,Score_element*); public: + + static int shift_compare (Note_column *const &, Note_column*const&); + /** The relative position of the "voice" containing this chord. Normally this would be the same as the stem direction, diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh index e3a5174f94..339b894088 100644 --- a/lily/include/p-score.hh +++ b/lily/include/p-score.hh @@ -14,6 +14,7 @@ #include "parray.hh" #include "lily-proto.hh" #include "music-output.hh" +#include "lily-guile.hh" /** all stuff which goes onto paper. notes, signs, symbols in a score #Paper_score# contains the items, the columns. @@ -27,10 +28,9 @@ class Paper_score : public Music_output /// other elements Link_array elem_p_arr_; - - Link_array to_delete_arr_; Link_array break_helpers_arr_; + SCM protected_scms_; public: Paper_def *paper_l_; @@ -62,21 +62,13 @@ public: /// add a Spanner void typeset_unbroken_spanner (Spanner*); - void schedule_for_delete (Score_element*); virtual ~Paper_score(); protected: - - /* MAIN ROUTINES */ virtual void process(); private: - - - Link_array remove_line (Line_of_score*); - Link_array remove_break_helpers (); - /// before calc_breaking void preprocess(); diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh index 719cc16d8e..2a0a7805ef 100644 --- a/lily/include/score-element.hh +++ b/lily/include/score-element.hh @@ -11,7 +11,6 @@ #include "virtual-methods.hh" #include "directed-graph.hh" #include "graphical-element.hh" -#include "protected-scm.hh" #include "lily-guile.hh" @@ -37,7 +36,16 @@ Boolean (true iff defined) */ class Score_element : public virtual Graphical_element { - Protected_scm element_property_alist_; + + friend class Paper_score; + /** + properties specific for this element. Destructor will not call + scm_unprotect, so as to allow more flexible GC arrangements. The + real alist is in (cdr element_property_alist_), to reduce the + need for more scm_protect calls. + + */ + SCM element_property_alist_; Link_array dependency_arr_; /** The lookup, determined by the font size. Cache this value. diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index b69209d906..0b8b10586a 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -22,7 +22,10 @@ public: int col_count () const; protected: virtual Array get_springs () const; - + + Real stem_dir_correction (Score_column*,Score_column*) const; + Real default_bar_spacing (Score_column*,Score_column*,Moment) const; + Real note_spacing (Score_column*,Score_column*,Moment) const; }; #endif /* SPACING_SPANNER_HH */ diff --git a/lily/include/stem.hh b/lily/include/stem.hh index f0e759afac..04dd3f1ce1 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -104,5 +104,7 @@ protected: virtual void do_pre_processing(); virtual Interval do_width() const; virtual Molecule* do_brew_molecule_p() const; + + void set_spacing_hints () ; }; #endif diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index b249a1b9a3..26e55b1770 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -92,7 +92,7 @@ Multi_measure_rest::do_brew_molecule_p () const } else if (measures_i_ > 1) { - Molecule s ( lookup_l ()->text ("number", to_str (measures_i_))); + Molecule s ( lookup_l ()->text ("number", to_str (measures_i_), paper_l ())); s.translate_axis (3.0 * interline_f, Y_AXIS); mol_p->add_molecule (s); diff --git a/lily/note-column.cc b/lily/note-column.cc index 26a33eb5cd..5f63501a47 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -20,6 +20,17 @@ Note_column::rest_b () const return rest_l_arr_.size (); } +int +Note_column::shift_compare (Note_column *const &p1, Note_column*const&p2) +{ + SCM s1 = p1->get_elt_property (horizontal_shift_scm_sym); + SCM s2 = p2->get_elt_property (horizontal_shift_scm_sym); + + int h1 = (s1 == SCM_BOOL_F) ? 0 : gh_scm2int (SCM_CDR(s1)); + int h2 = (s2 == SCM_BOOL_F) ? 0 : gh_scm2int (SCM_CDR(s2)); + return h1 - h2; +} + Note_column::Note_column() { set_axes (X_AXIS,X_AXIS); @@ -32,18 +43,17 @@ Note_column::sort() head_l_arr_.sort (Note_head::compare); } -Interval_t +Slice Note_column::head_positions_interval() const { - ((Note_column*)this)->sort(); - Interval_t iv; + Slice iv; iv.set_empty (); - - if (head_l_arr_.size ()) - iv = Interval_t(head_l_arr_[0]->position_i_, - head_l_arr_.top()->position_i_); - + for (int i=0; i position_i_; + iv.unite (Slice (j,j)); + } return iv; } diff --git a/lily/p-score.cc b/lily/p-score.cc index 4edfd1b3e9..c48cbddce0 100644 --- a/lily/p-score.cc +++ b/lily/p-score.cc @@ -25,6 +25,7 @@ Paper_score::Paper_score () { + protected_scms_ = scm_protect_object (gh_cons (SCM_BOOL_T, SCM_EOL)); paper_l_ =0; outputter_l_ =0; Line_of_score * line_p = new Line_of_score; @@ -45,6 +46,8 @@ Paper_score::~Paper_score () delete span_p_arr_[i]; for (int i=elem_p_arr_.size (); --i >=0 ; ) delete elem_p_arr_[i]; + + scm_unprotect_object (protected_scms_); } void @@ -53,7 +56,11 @@ Paper_score::typeset_element (Score_element * elem_p) elem_p_arr_.push (elem_p); elem_p->pscore_l_ = this; - + // take over protection. + SCM_CDR(protected_scms_) = gh_cons (elem_p->element_property_alist_, + SCM_CDR (protected_scms_)); + scm_unprotect_object (elem_p->element_property_alist_); + SCM p = elem_p->remove_elt_property (break_helper_only_scm_sym); if (p != SCM_BOOL_F) break_helpers_arr_.push (elem_p); @@ -137,44 +144,6 @@ Paper_score::calc_breaking () -/* - not clean. Should update elem_p_arr_ and span_p_arr_. That would - also repair the stats. - - This may be done efficiently by first sorting the arrays. */ -void -delete_array_contents (Link_array &to_remove, Dictionary &type_stats) -{ - for (int i=0; i < to_remove.size (); i++) - { - Score_element * e = to_remove[i]; - String nm = e->name(); - if (type_stats.elem_b (nm)) - type_stats[nm] ++; - else - type_stats[nm] = 1; - - if (dynamic_cast (e)) - type_stats["Item"] ++; - else if (dynamic_cast(e)) - type_stats["Spanner"] ++; - type_stats["Total"] ++; - /* - */ - - // delete e; //TODO! - } - - to_remove.clear (); - to_remove.tighten_maxsize (); -} - -void -Paper_score::schedule_for_delete (Score_element*e) -{ - to_delete_arr_.push (e); -} - void Paper_score::process () { @@ -194,8 +163,6 @@ Paper_score::process () Array breaking = calc_breaking (); - delete_array_contents (break_helpers_arr_, type_stats); - Paper_stream* paper_stream_p = paper_l_->paper_stream_p (); outputter_l_ = paper_l_->paper_outputter_p (paper_stream_p, header_l_, origin_str_); @@ -226,8 +193,6 @@ Paper_score::process () *mlog << '(' << elem_p_arr_.size () + span_p_arr_.size () << ')'; *mlog << ']' << flush; - - delete_array_contents (to_delete_arr_, type_stats); } // huh? diff --git a/lily/paper-def.cc b/lily/paper-def.cc index e420ed6a47..4cd2101032 100644 --- a/lily/paper-def.cc +++ b/lily/paper-def.cc @@ -49,7 +49,6 @@ Paper_def::Paper_def (Paper_def const&s) for (Hash_table_iter ai(*s.lookup_p_tab_p_); ai.ok (); ai++) { Lookup * l = new Lookup (*ai.val ()); - l->paper_l_ = this; set_lookup (ai.key(), l); } } @@ -165,7 +164,6 @@ Paper_def::set_lookup (int i, Lookup*l) { delete lookup_p_tab_p_->elem (i); } - l ->paper_l_ = this; (*lookup_p_tab_p_)[i] = l; } diff --git a/lily/parser.yy b/lily/parser.yy index edf2ee9557..2bbb8cf18c 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -55,7 +55,7 @@ // mmm Mudela_version oldest_version ("1.0.20"); -Mudela_version version ("1.0.20"); +Mudela_version version ("1.0.21"); void print_mudela_versions (ostream &os) diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 5483ff9ace..ed45fef5da 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -80,10 +80,12 @@ Rhythmic_column_engraver::do_pre_move_processing() { if (ncol_p_) { + Scalar sh = get_property ("horizontalNoteShift", 0); // egcs - if (get_property ("hshift", 0).operator bool ()) + if (sh.to_bool () && sh.isnum_b ()) { - ncol_p_->set_elt_property (horizontal_shift_scm_sym, SCM_BOOL_T); + ncol_p_->set_elt_property (horizontal_shift_scm_sym, + gh_int2scm (int (sh))); } typeset_element (ncol_p_); diff --git a/lily/score-element.cc b/lily/score-element.cc index f77f9c9e8c..3215b80930 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -43,7 +43,7 @@ Score_element::Score_element() lookup_l_ =0; status_i_ = 0; original_l_ = 0; - element_property_alist_ = SCM_EOL; + element_property_alist_ = scm_protect_object (gh_cons (gh_cons (void_scm_sym, SCM_BOOL_T) , SCM_EOL)); } Score_element::Score_element (Score_element const&s) @@ -51,7 +51,7 @@ Score_element::Score_element (Score_element const&s) { used_b_ = true; original_l_ =(Score_element*) &s; - element_property_alist_ = scm_list_copy (s.element_property_alist_); + element_property_alist_ = scm_protect_object (scm_list_copy (s.element_property_alist_)); dependency_arr_ = s.dependency_arr_; output_p_ =0; status_i_ = s.status_i_; @@ -94,15 +94,15 @@ SCM Score_element::remove_elt_property (SCM key) { SCM s = get_elt_property (key); - element_property_alist_ = scm_assq_remove_x (element_property_alist_, key); + SCM_CDR(element_property_alist_) = scm_assq_remove_x (SCM_CDR (element_property_alist_), key); return s; } void Score_element::set_elt_property (SCM s, SCM v) { - element_property_alist_ = - scm_assoc_set_x (element_property_alist_, s, v); + SCM_CDR(element_property_alist_) = + scm_assoc_set_x (SCM_CDR (element_property_alist_), s, v); } Interval @@ -221,8 +221,6 @@ Score_element::output_processing () pscore_l_->outputter_l_->output_molecule (output_p_, o, classname(this)); - - pscore_l_->schedule_for_delete (this); } /* @@ -307,9 +305,9 @@ Score_element::add_dependency (Score_element*e) e->used_b_ = true; } else - warning("Null dependency added"); - + programming_error ("Null dependency added"); } + void Score_element::substitute_dependency (Score_element* old, Score_element* new_l) { diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 8cd17a52d8..250267faf9 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -231,13 +231,11 @@ Score_engraver::do_try_music (Music*r) { if (Break_req* b = dynamic_cast (r)) { + gotcha = true; if (b->penalty_i_ <= Break_req::DISALLOW) break_penalty_i_ = b->penalty_i_; else if (b->penalty_i_ >= Break_req::FORCE) - { - command_column_l_->break_penalty_i_ = b->penalty_i_; - gotcha = true; - } + command_column_l_->break_penalty_i_ = b->penalty_i_; } } return gotcha; diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 4979c7b5a3..9c77ccea57 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -39,10 +39,6 @@ Spacing_spanner::scol (int i)const generate springs between columns. - TODO - - * Spacing should take optical effects into account - The algorithm is partly taken from : John S. Gourlay. ``Spacing a Line of Music,'' Technical Report @@ -71,179 +67,185 @@ Spacing_spanner::do_measure (int col1, int col2) const Array meas_springs; - /* - UGR GUR URG. duplicate code for spacing generation. - */ for (int i= col1; i < col2; i++) { - SCM hint = scol (i)->get_elt_property (extra_space_scm_sym); - if (hint != SCM_BOOL_F) - { - hint = SCM_CDR (hint); - - Spring s; - s.item_l_drul_[LEFT] = scol (i); - s.item_l_drul_[RIGHT] = scol (i+1); - Real unbroken_dist = gh_scm2double (SCM_CDR(hint)); + Item * l = scol(i); + Item * r = scol(i+1); + Item * lb = l->find_prebroken_piece (RIGHT); + Item * rb = r->find_prebroken_piece (LEFT); - s.distance_f_ = unbroken_dist; - s.strength_f_ = 2.0; - + Item* combinations[4][2]={{l,r}, {lb,r}, {l,rb},{lb,rb}}; - meas_springs.push (s); + for (int i=0; i < 4; i++) + { + Score_column * lc = dynamic_cast (combinations[i][0]); + Score_column *rc = dynamic_cast (combinations[i][1]); + if (!lc || !rc) + continue; + Spring s; + s.item_l_drul_[LEFT] = lc; + s.item_l_drul_[RIGHT] = rc; - Item * l = scol(i)->find_prebroken_piece (RIGHT); - Item * r = scol(i+1)->find_prebroken_piece (LEFT); - if (l) + SCM hint = lc->get_elt_property (extra_space_scm_sym); + SCM next_hint = rc->get_elt_property (extra_space_scm_sym); + + if (hint != SCM_BOOL_F) { - Spring s; - s.item_l_drul_[LEFT] = l; - s.item_l_drul_[RIGHT] = scol (i+1); - hint = l->get_elt_property (extra_space_scm_sym); - - if (hint == SCM_BOOL_F) - { - programming_error ("No postbreak breakable spacing hint set."); - s.distance_f_= unbroken_dist; - } - else - s.distance_f_ = gh_scm2double (SCM_CDDR(hint)); - - /* - space around barlines should not stretch very much. - */ + hint = SCM_CDDR (hint); + + s.distance_f_ = gh_scm2double (hint); + if (!lc->musical_b ()) s.strength_f_ = 2.0; - meas_springs.push (s); } - - if (r) + else if (!lc->musical_b() && i+1 < col_count()) { - Spring s; - s.item_l_drul_[LEFT] = scol (i); - s.item_l_drul_[RIGHT] = r; - s.distance_f_ = unbroken_dist; - - /* - space around barlines should not stretch very much. - */ + s.distance_f_ = default_bar_spacing (lc,rc,shortest); s.strength_f_ = 2.0; - meas_springs.push (s); } - - if (l&&r) + else if (lc->musical_b()) { - Spring s; - s.item_l_drul_[LEFT] = l; - s.item_l_drul_[RIGHT] = r; + s.distance_f_ = note_spacing (lc, rc, shortest); - hint = l->get_elt_property (extra_space_scm_sym); - if (hint == SCM_BOOL_F) - { - programming_error ("No postbreak breakable spacing hint set."); - s.distance_f_= unbroken_dist; - } - else - s.distance_f_ = gh_scm2double (SCM_CDDR(hint)); - - /* - space around barlines should not stretch very much. - */ - s.strength_f_ = 2.0; - meas_springs.push (s); - } - } - else if (!scol (i)->musical_b() && i+1 < col_count()) - { - Real symbol_distance = scol (i)->extent (X_AXIS)[RIGHT] ; - Real durational_distance = 0; - Moment delta_t = scol (i+1)->when_mom () - scol (i)->when_mom () ; - /* - ugh should use shortest_playing distance - */ - if (delta_t) - { - Real k= paper_l()->arithmetic_constant (shortest); - durational_distance = paper_l()->length_mom_to_dist (delta_t,k); } - symbol_distance += -scol (i+1)->extent(X_AXIS)[LEFT]; - - Spring s ; - s.item_l_drul_[LEFT] = scol (i); - s.item_l_drul_[RIGHT] = scol (i+1); - s.distance_f_ = symbol_distance >? durational_distance; - meas_springs.push (s); - - Item *l = s.item_l_drul_[LEFT]->find_prebroken_piece (RIGHT); - Item *r = s.item_l_drul_[RIGHT]->find_prebroken_piece (LEFT); - Spring sp_orig (s); - if (l) + if (next_hint != SCM_BOOL_F) { - s = sp_orig; - s.item_l_drul_[LEFT] =l ; - meas_springs.push (s); + next_hint = SCM_CADR(next_hint); + s.distance_f_ += gh_scm2double (next_hint); } - - if (l && r) + else { - s = sp_orig; - s.item_l_drul_[RIGHT] = r; - s.item_l_drul_[LEFT] = l; - meas_springs.push (s); + Interval ext (rc->extent (X_AXIS)); + Real correction = ext.empty_b() ? 0.0 : - ext [LEFT]; + + /* + don't want to create too much extra space for accidentals + */ + if (lc->musical_b () && rc->musical_b ()) + correction /= 2.0; + + s.distance_f_ += correction; } + meas_springs.push (s); } } - for (int i=col1; i < col2; i++) + return meas_springs; +} + +/** + Do something if breakable column has no spacing hints set. + */ +Real +Spacing_spanner::default_bar_spacing (Score_column *lc, Score_column *rc, Moment shortest) const +{ + Real symbol_distance = lc->extent (X_AXIS)[RIGHT] ; + Real durational_distance = 0; + Moment delta_t = rc->when_mom () - lc->when_mom () ; + + /* + ugh should use shortest_playing distance + */ + if (delta_t) { - if (scol (i)->musical_b()) - { - Moment shortest_playing_len = scol(i)->shortest_playing_mom_; - if (! shortest_playing_len) - { - warning (_f ("can't find a ruling note at %s", - scol (i)->when_mom ().str ())); - shortest_playing_len = 1; - } - if (! shortest) - { - warning (_f ("no minimum in measure at %s", - scol (i)->when_mom ().str ())); - shortest = 1; - } - Moment delta_t = scol (i+1)->when_mom () - scol (i)->when_mom (); - Real k= paper_l()->arithmetic_constant(shortest); - Real dist = paper_l()->length_mom_to_dist (shortest_playing_len, k); - dist *= (double)(delta_t / shortest_playing_len); + Real k= paper_l()->arithmetic_constant (shortest); + durational_distance = paper_l()->length_mom_to_dist (delta_t,k); + } + return symbol_distance >? durational_distance; +} - Spring sp; - sp.distance_f_ = dist; - sp.item_l_drul_[LEFT] = scol (i); - sp.item_l_drul_[RIGHT] = scol (i+1); - meas_springs.push (sp); +Real +Spacing_spanner::note_spacing (Score_column *lc, Score_column *rc, Moment shortest) const +{ + Moment shortest_playing_len = lc->shortest_playing_mom_; + if (! shortest_playing_len) + { + warning (_f ("can't find a ruling note at %s", + lc->when_mom ().str ())); + shortest_playing_len = 1; + } + if (! shortest) + { + warning (_f ("no minimum in measure at %s", + lc->when_mom ().str ())); + shortest = 1; + } + Moment delta_t = rc->when_mom () - lc->when_mom (); + Real k= paper_l()->arithmetic_constant(shortest); + Real dist = paper_l()->length_mom_to_dist (shortest_playing_len, k); + dist *= (double)(delta_t / shortest_playing_len); - /* - UGH. TODO: more - advanced spacing here. - */ - Spring sp_orig (sp); + dist += stem_dir_correction (lc,rc); + return dist; +} - Item *r = sp.item_l_drul_[RIGHT]->find_prebroken_piece (LEFT); - - if (r) - { - sp = sp_orig; - sp.item_l_drul_[RIGHT] =r ; - meas_springs.push (sp); - } - } + +/** + Correct for optical illusions. See [Wanske] p. 138. The combination + up-stem + down-stem should get extra space, the combination + down-stem + up-stem less. + + This should be more advanced, since relative heights of the note + heads also influence required correction. + + Also might not work correctly ico. multi voices or staff changing voices + + TODO: lookup correction distances? More advanced correction? + Possibly turn this off? + + This routine reads the DIR_LIST property of both its L and R arguments. +*/ +Real +Spacing_spanner::stem_dir_correction (Score_column*l, Score_column*r) const +{ + SCM dl = l->get_elt_property (dir_list_scm_sym); + SCM dr = r->get_elt_property (dir_list_scm_sym); + if (dl == SCM_BOOL_F || dr == SCM_BOOL_F) + return 0.0; + + dl = SCM_CDR (dl); + dr = SCM_CDR (dr); + + if (scm_ilength (dl) != 1 && scm_ilength (dr) != 1) + return 0.; + + dl = SCM_CAR(dl); + dr = SCM_CAR(dr); + + assert (gh_number_p (dl) && gh_number_p(dr)); + int d1 = gh_scm2int (dl); + int d2 = gh_scm2int (dr); + + if (d1 == d2) + return 0.0; + + bool err = false; + Real correction = 0.0; + Real ssc = paper_l ()->get_realvar(ly_symbol ("stemSpacingCorrection")); + + + if (d1 && d2) + { + if (d1 == 1 && d2 == -1) + correction = ssc; + else if (d1 == -1 && d2 == 1) + correction = -ssc; + else + err = true; } - return meas_springs; + + else + err = true; + + if (err) + programming_error ("Stem directions not set correctly for optical correction"); + return correction; } + Array Spacing_spanner::get_springs () const @@ -253,12 +255,14 @@ Spacing_spanner::get_springs () const for (int i=1; i < col_count (); i++) { if (scol (i)->breakable_b ()) - { - springs.concat (do_measure (last_break, i)); - last_break = i; - } + { + springs.concat (do_measure (last_break, i)); + last_break = i; + } } return springs; } + + diff --git a/lily/span-bar.cc b/lily/span-bar.cc index b9a435b4cc..65b57f9620 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -31,7 +31,7 @@ Span_bar::do_substitute_element_pointer (Score_element*o, Score_element*n) Interval Span_bar::do_width () const { - Molecule m = lookup_l ()->bar (type_str_, 40 PT); + Molecule m = lookup_l ()->bar (type_str_, 40 PT, paper_l ()); return m.extent (X_AXIS); } @@ -109,7 +109,7 @@ Span_bar::do_brew_molecule_p () const Molecule*output = new Molecule; if (!iv.empty_b()) { - output->add_molecule (lookup_l ()->bar (type_str_, iv.length ())); + output->add_molecule (lookup_l ()->bar (type_str_, iv.length (), paper_l ())); output->translate_axis (iv.center (), Y_AXIS); } else diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc index df25b4ee33..c9ecb2492e 100644 --- a/lily/spring-spacer.cc +++ b/lily/spring-spacer.cc @@ -404,9 +404,15 @@ Spring_spacer::add_column (Paper_column *col, bool fixed, Real fixpos) if (cols_[idx].pcol_l_ != cr.other_l_) continue; - - connect (idx, this_rank, cr.distance_f_, - cr.strength_f_ / cr.distance_f_); + Real d = cr.distance_f_; + if (fabs (d) < EPS) + { + connect (idx, this_rank, 0.0, 10); // large strength. + programming_error ("requesting zero distance."); + } + else + connect (idx, this_rank, cr.distance_f_, + cr.strength_f_ / cr.distance_f_); } cols_.push (c); diff --git a/lily/stem.cc b/lily/stem.cc index 55b2036269..97fa1565cc 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -244,6 +244,36 @@ Stem::do_pre_processing () set_elt_property (transparent_scm_sym, SCM_BOOL_T); } set_empty (invisible_b ()); + set_spacing_hints (); +} + + + +/** + set stem directions for hinting the optical spacing correction. + + Modifies DIR_LIST property of the Stem's Score_column + + TODO: more advanced: supply height of noteheads as well, for more advanced spacing possibilities + */ +void +Stem::set_spacing_hints () +{ + if (!invisible_b ()) + { + SCM scmdir = gh_int2scm (dir_); + SCM dirlist = column_l ()->get_elt_property (dir_list_scm_sym); + if (dirlist == SCM_BOOL_F) + dirlist = SCM_EOL; + else + dirlist = SCM_CDR (dirlist); + + if (scm_sloppy_memq (scmdir, dirlist) == SCM_EOL) + { + dirlist = gh_cons (scmdir, dirlist); + column_l ()->set_elt_property (dir_list_scm_sym, dirlist); + } + } } @@ -280,8 +310,9 @@ Stem::do_brew_molecule_p () const if (!invisible_b ()) { - Molecule ss =lookup_l ()->stem (stem_y[DOWN]*dy, - stem_y[UP]*dy); + Real stem_width = paper_l ()->get_var ("stemthickness"); + Molecule ss =lookup_l ()->filledbox (Box (Interval (-stem_width/2, stem_width/2), + Interval (stem_y[DOWN]*dy, stem_y[UP]*dy))); mol_p->add_molecule (ss); } diff --git a/lily/time-signature.cc b/lily/time-signature.cc index d5a2b727d8..75bbaa2ee2 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -26,15 +26,15 @@ Time_signature::do_brew_molecule_p () const if (time_sig_type_str_[0]=='1') { Array tmparr = args_; - return new Molecule( lookup_l ()->time_signature (args_[0], 0)); + return new Molecule( lookup_l ()->time_signature (args_[0], 0, paper_l ())); } else { - return new Molecule( lookup_l ()-> special_time_signature (time_sig_type_str_ ,args_[0], args_[1])); + return new Molecule( lookup_l ()-> special_time_signature (time_sig_type_str_ ,args_[0], args_[1], paper_l ())); } } else - return new Molecule(lookup_l ()->time_signature (args_[0], args_[1])); + return new Molecule(lookup_l ()->time_signature (args_[0], args_[1],paper_l ())); } diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 1383acbb1d..3f76d659e1 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -16,6 +16,8 @@ #include "tuplet-spanner.hh" #include "stem.hh" #include "note-column.hh" +#include "dimensions.hh" + Tuplet_spanner::Tuplet_spanner () { @@ -53,7 +55,7 @@ Tuplet_spanner::do_brew_molecule_p () const Real ncw = column_arr_.top ()->extent (X_AXIS).length (); Real w = extent (X_AXIS).length () + ncw; Molecule num (lookup_l ()->text ("italic", - number_str_)); + number_str_, paper_l ())); num.align_to (X_AXIS, CENTER); num.translate_axis (w/2, X_AXIS); Real interline = paper_l ()->get_realvar (interline_scm_sym); @@ -63,16 +65,11 @@ Tuplet_spanner::do_brew_molecule_p () const num.translate_axis (dir_ * interline, Y_AXIS); num.translate_axis (dy/2, Y_AXIS); - - /* if (beam_l_arr_.size () == 1 && !bracket_visibility) - { - num.translate_axis (dir_ * interline, Y_AXIS); - } - */ + Real thick = paper_l ()->get_realvar (tuplet_thick_scm_sym); if (bracket_visibility) { - mol_p->add_molecule (lookup_l ()->plet (dy, w, dir_)); + mol_p->add_molecule (lookup_l ()->tuplet_bracket (dy, w, thick, interline, dir_)); } if (number_visibility) diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index 39d220d442..32c48b9687 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -33,16 +33,16 @@ Volta_spanner::do_brew_molecule_p () const if (!column_arr_.size ()) return mol_p; - - Real internote_f = paper_l ()->get_realvar (interline_scm_sym)/2.0; + Real interline_f = paper_l ()->get_realvar (interline_scm_sym); + Real internote_f = interline_f/2; + Real t = paper_l ()->get_realvar (volta_thick_scm_sym); Real dx = internote_f; Real w = extent (X_AXIS).length () - dx; - Molecule volta (lookup_l ()->volta (w, last_b_)); + Molecule volta (lookup_l ()->volta (w, t, interline_f, last_b_)); Real h = volta.dim_.y ().length (); - - Molecule num (lookup_l ()->text ("volta", number_str_)); + Molecule num (lookup_l ()->text ("volta", number_str_, paper_l ())); Real dy = column_arr_.top ()->extent (Y_AXIS) [UP] > column_arr_[0]->extent (Y_AXIS) [UP]; dy += 2 * h; @@ -51,7 +51,7 @@ Volta_spanner::do_brew_molecule_p () const dy = dy >? note_column_arr_[i]->extent (Y_AXIS)[BIGGER]; dy -= h; - Molecule two (lookup_l ()->text ("number", "2")); + Molecule two (lookup_l ()->text ("number", "2", paper_l ())); Real gap = two.dim_.x ().length () / 2; Offset off (num.dim_.x ().length () + gap, h / internote_f - gap); diff --git a/ly/book-fragment.ly b/ly/book-fragment.ly index 05eb9b5ab4..514693c498 100644 --- a/ly/book-fragment.ly +++ b/ly/book-fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" diff --git a/ly/book-init.ly b/ly/book-init.ly index eaf3e7bf2a..3bba4f0837 100644 --- a/ly/book-init.ly +++ b/ly/book-init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly"; diff --git a/ly/center-fragment.ly b/ly/center-fragment.ly index 65c2f669d3..a5bfb07806 100644 --- a/ly/center-fragment.ly +++ b/ly/center-fragment.ly @@ -1,7 +1,7 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" diff --git a/ly/center.ly b/ly/center.ly index 4d5a0bf5dc..b32c0338a4 100644 --- a/ly/center.ly +++ b/ly/center.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" diff --git a/ly/fragment.ly b/ly/fragment.ly index 13500905ec..57e9bba99e 100644 --- a/ly/fragment.ly +++ b/ly/fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" diff --git a/ly/init.fly b/ly/init.fly index 31215a15ca..13ef9a393b 100644 --- a/ly/init.fly +++ b/ly/init.fly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" diff --git a/ly/init.ly b/ly/init.ly index 5f652ecdcf..10f2c49593 100644 --- a/ly/init.ly +++ b/ly/init.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly"; diff --git a/ly/init.sly b/ly/init.sly index 8f03850e7e..ccd35763e3 100644 --- a/ly/init.sly +++ b/ly/init.sly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "1.0.20"; +\version "1.0.21"; \include "declarations.ly" @@ -10,8 +10,8 @@ \maininput } \paper { - linewidth=-1.0; - indent = 0.0; + linewidth=-1.0; + % indent = 0.0; } \midi{ } } diff --git a/ly/paper16.ly b/ly/paper16.ly index e499491a65..e439ab17b3 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -2,7 +2,7 @@ -\version "1.0.20"; +\version "1.0.21"; paper_sixteen = \paper { staffheight = 16.0\pt; diff --git a/ly/paper20.ly b/ly/paper20.ly index 2de985a5f0..90bebc6d7d 100644 --- a/ly/paper20.ly +++ b/ly/paper20.ly @@ -1,7 +1,7 @@ % paper20.ly -\version "1.0.20"; +\version "1.0.21"; paper_twenty = \paper { staffheight = 20.0\pt; diff --git a/ly/params.ly b/ly/params.ly index 845417014a..33fabb80ab 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -143,8 +143,12 @@ crescendo_shorten = 4.0 * \interline; restcollision_minimum_dist = 3.0; restcollision_minimum_beamdist = 1.5; -postBreakPadding = 1.0*\interline; +% deprecated! +postBreakPadding = 0.0; + +stemSpacingCorrection = 0.5*\interline; \include "engraver.ly"; + diff --git a/ly/property.ly b/ly/property.ly index 7aa173d0b4..979e2e66f0 100644 --- a/ly/property.ly +++ b/ly/property.ly @@ -30,8 +30,8 @@ slurdown = \notes { \property Voice.slurVerticalDirection = \down } -shifton = \property Voice.hshift = 1 -shiftoff = \property Voice.hshift = 0 +shifton = \property Voice.horizontalNoteShift = 1 +shiftoff = \property Voice.horizontalNoteShift = 0 onevoice = { \stemboth \shiftoff @@ -59,33 +59,6 @@ voicefour = \shifton } -onestaff = - \translator Staff=one - - -staffone = { - \translator Staff=one - \property Staff.verticalDirection = \center - \property Staff.hshift = 0 -} - -stafftwo = { - \translator Staff=two - \property Staff.verticalDirection = \center - \property Staff.hshift = 0 -} - -staffthree = { - \translator Staff=three - \property Staff.verticalDirection = \center - \property Staff.hshift = 0 -} - -stafffour = { - \translator Staff=four - \property Staff.verticalDirection = \center - \property Staff.hshift = 0 -} % ugh, cluttering global namespace... diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly index e90c55e26d..0bca494223 100644 --- a/mutopia/Coriolan/bassi-part.ly +++ b/mutopia/Coriolan/bassi-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "violoncello.ly" diff --git a/mutopia/Coriolan/clarinetti-part.ly b/mutopia/Coriolan/clarinetti-part.ly index a43c6dfe97..923b3b57c6 100644 --- a/mutopia/Coriolan/clarinetti-part.ly +++ b/mutopia/Coriolan/clarinetti-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "clarinetti.ly" diff --git a/mutopia/Coriolan/clarinetti.ly b/mutopia/Coriolan/clarinetti.ly index 581cf740e5..aa441a3ba3 100644 --- a/mutopia/Coriolan/clarinetti.ly +++ b/mutopia/Coriolan/clarinetti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "clarinetto-1.ly" \include "clarinetto-2.ly" diff --git a/mutopia/Coriolan/clarinetto-1.ly b/mutopia/Coriolan/clarinetto-1.ly index 7645f4172b..dca9983180 100644 --- a/mutopia/Coriolan/clarinetto-1.ly +++ b/mutopia/Coriolan/clarinetto-1.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; clarinetto1 = \notes \relative c { R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/clarinetto-2.ly b/mutopia/Coriolan/clarinetto-2.ly index 7503d18ada..281418a8fd 100644 --- a/mutopia/Coriolan/clarinetto-2.ly +++ b/mutopia/Coriolan/clarinetto-2.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; clarinetto2 = \notes \relative c { R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/contrabasso-part.ly b/mutopia/Coriolan/contrabasso-part.ly index 0f0a58c52d..8f364a98cc 100644 --- a/mutopia/Coriolan/contrabasso-part.ly +++ b/mutopia/Coriolan/contrabasso-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "contrabasso.ly" diff --git a/mutopia/Coriolan/contrabasso.ly b/mutopia/Coriolan/contrabasso.ly index c958df6f43..24ee6a2a3c 100644 --- a/mutopia/Coriolan/contrabasso.ly +++ b/mutopia/Coriolan/contrabasso.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; contrabasso = \notes \relative c { % \translator Staff=violoncello diff --git a/mutopia/Coriolan/corni-part.ly b/mutopia/Coriolan/corni-part.ly index b904ec9b8c..18356afdb4 100644 --- a/mutopia/Coriolan/corni-part.ly +++ b/mutopia/Coriolan/corni-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "corni.ly" diff --git a/mutopia/Coriolan/corni.ly b/mutopia/Coriolan/corni.ly index dc490a2704..3baa0bff1a 100644 --- a/mutopia/Coriolan/corni.ly +++ b/mutopia/Coriolan/corni.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "corno-1.ly" \include "corno-2.ly" diff --git a/mutopia/Coriolan/corno-1.ly b/mutopia/Coriolan/corno-1.ly index 5db1f24206..c3ea92df03 100644 --- a/mutopia/Coriolan/corno-1.ly +++ b/mutopia/Coriolan/corno-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; corno1 = \notes \relative c { R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/corno-2.ly b/mutopia/Coriolan/corno-2.ly index d05eb04bfd..2461ec83d4 100644 --- a/mutopia/Coriolan/corno-2.ly +++ b/mutopia/Coriolan/corno-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; corno2 = \notes \relative c { R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/fagotti-part.ly b/mutopia/Coriolan/fagotti-part.ly index 77cf1e3abf..94fd4fd552 100644 --- a/mutopia/Coriolan/fagotti-part.ly +++ b/mutopia/Coriolan/fagotti-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "fagotti.ly" diff --git a/mutopia/Coriolan/fagotti.ly b/mutopia/Coriolan/fagotti.ly index f8d277a584..555c01ef9b 100644 --- a/mutopia/Coriolan/fagotti.ly +++ b/mutopia/Coriolan/fagotti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "fagotto-1.ly" \include "fagotto-2.ly" diff --git a/mutopia/Coriolan/fagotto-1.ly b/mutopia/Coriolan/fagotto-1.ly index 096176e765..fcdb906da0 100644 --- a/mutopia/Coriolan/fagotto-1.ly +++ b/mutopia/Coriolan/fagotto-1.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; fagotto1 = \notes \relative c { R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/fagotto-2.ly b/mutopia/Coriolan/fagotto-2.ly index d5aaf3e699..980337e003 100644 --- a/mutopia/Coriolan/fagotto-2.ly +++ b/mutopia/Coriolan/fagotto-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; fagotto2 = \notes \relative c { R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/flauti-part.ly b/mutopia/Coriolan/flauti-part.ly index ff50562870..e10242a35b 100644 --- a/mutopia/Coriolan/flauti-part.ly +++ b/mutopia/Coriolan/flauti-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "flauti.ly" diff --git a/mutopia/Coriolan/flauti.ly b/mutopia/Coriolan/flauti.ly index 1557ba98d1..335cfd3091 100644 --- a/mutopia/Coriolan/flauti.ly +++ b/mutopia/Coriolan/flauti.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "flauto-1.ly" \include "flauto-2.ly" diff --git a/mutopia/Coriolan/flauto-1.ly b/mutopia/Coriolan/flauto-1.ly index faf51d925c..4ae7119a3b 100644 --- a/mutopia/Coriolan/flauto-1.ly +++ b/mutopia/Coriolan/flauto-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; flauto1 = \notes \relative c { R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/flauto-2.ly b/mutopia/Coriolan/flauto-2.ly index 310d693398..067a3620df 100644 --- a/mutopia/Coriolan/flauto-2.ly +++ b/mutopia/Coriolan/flauto-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; flauto2 = \notes \relative c { R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/global.ly b/mutopia/Coriolan/global.ly index cf487141d8..8eefc99001 100644 --- a/mutopia/Coriolan/global.ly +++ b/mutopia/Coriolan/global.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; global = \notes { \time 4/4; diff --git a/mutopia/Coriolan/oboe-1.ly b/mutopia/Coriolan/oboe-1.ly index 67d9d6d3b3..4631ba29e4 100644 --- a/mutopia/Coriolan/oboe-1.ly +++ b/mutopia/Coriolan/oboe-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; oboe1 = \notes \relative c'' { R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/oboe-2.ly b/mutopia/Coriolan/oboe-2.ly index c92d6d88d1..8a138bde03 100644 --- a/mutopia/Coriolan/oboe-2.ly +++ b/mutopia/Coriolan/oboe-2.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; oboe2 = \notes \relative c{ R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/oboi-part.ly b/mutopia/Coriolan/oboi-part.ly index 599c688daa..cbdc44edb3 100644 --- a/mutopia/Coriolan/oboi-part.ly +++ b/mutopia/Coriolan/oboi-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "oboi.ly" diff --git a/mutopia/Coriolan/oboi.ly b/mutopia/Coriolan/oboi.ly index b3f61ac178..d9d8db98d5 100644 --- a/mutopia/Coriolan/oboi.ly +++ b/mutopia/Coriolan/oboi.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "oboe-1.ly" \include "oboe-2.ly" diff --git a/mutopia/Coriolan/timpani.ly b/mutopia/Coriolan/timpani.ly index b2fefcf945..64182a018a 100644 --- a/mutopia/Coriolan/timpani.ly +++ b/mutopia/Coriolan/timpani.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; timpani = \notes \relative c { R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/trombe-part.ly b/mutopia/Coriolan/trombe-part.ly index 4065c85e5c..7e829fc02e 100644 --- a/mutopia/Coriolan/trombe-part.ly +++ b/mutopia/Coriolan/trombe-part.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "trombe.ly" diff --git a/mutopia/Coriolan/trombe.ly b/mutopia/Coriolan/trombe.ly index f552fd2c6e..28ea0951ff 100644 --- a/mutopia/Coriolan/trombe.ly +++ b/mutopia/Coriolan/trombe.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "trombo-1.ly" \include "trombo-2.ly" diff --git a/mutopia/Coriolan/trombo-1.ly b/mutopia/Coriolan/trombo-1.ly index 8d8952e75c..1d7a55ee4d 100644 --- a/mutopia/Coriolan/trombo-1.ly +++ b/mutopia/Coriolan/trombo-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; trombo1 = \notes \relative c { R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/trombo-2.ly b/mutopia/Coriolan/trombo-2.ly index 3812ea54ef..92fd2bfa75 100644 --- a/mutopia/Coriolan/trombo-2.ly +++ b/mutopia/Coriolan/trombo-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; trombo2 = \notes \relative c { R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 | diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly index 92a2f3211f..7aac9fc86b 100644 --- a/mutopia/Coriolan/viola-1.ly +++ b/mutopia/Coriolan/viola-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; viola1 = \notes \relative c { \context Voice=one diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly index b0e5f7fe04..1f1c90e041 100644 --- a/mutopia/Coriolan/viola-2.ly +++ b/mutopia/Coriolan/viola-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; viola2 = \notes \relative c { % starts on (actualy, most part is on) same staff as viola1 diff --git a/mutopia/Coriolan/viola-part.ly b/mutopia/Coriolan/viola-part.ly index e3ce9da93c..f6ac9f640a 100644 --- a/mutopia/Coriolan/viola-part.ly +++ b/mutopia/Coriolan/viola-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "viola-1.ly" diff --git a/mutopia/Coriolan/violino-1-part.ly b/mutopia/Coriolan/violino-1-part.ly index 3ed4fb306f..e5641f9fd1 100644 --- a/mutopia/Coriolan/violino-1-part.ly +++ b/mutopia/Coriolan/violino-1-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "violino-1.ly" diff --git a/mutopia/Coriolan/violino-1.ly b/mutopia/Coriolan/violino-1.ly index 2e4b87f08a..b77cd240aa 100644 --- a/mutopia/Coriolan/violino-1.ly +++ b/mutopia/Coriolan/violino-1.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; violino1 = \notes \relative c { c'1\ff ~ | c | r r2 | R1 | diff --git a/mutopia/Coriolan/violino-2-part.ly b/mutopia/Coriolan/violino-2-part.ly index e738e9d945..89cc9cb00d 100644 --- a/mutopia/Coriolan/violino-2-part.ly +++ b/mutopia/Coriolan/violino-2-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "violino-2.ly" diff --git a/mutopia/Coriolan/violino-2.ly b/mutopia/Coriolan/violino-2.ly index 535a41690d..d9e906c74e 100644 --- a/mutopia/Coriolan/violino-2.ly +++ b/mutopia/Coriolan/violino-2.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; violino2 = \notes \relative c { c'1\ff ~ | c | r r2 | R1 | diff --git a/mutopia/Coriolan/violoncello-part.ly b/mutopia/Coriolan/violoncello-part.ly index 4f40fbf0c8..34f48f6a20 100644 --- a/mutopia/Coriolan/violoncello-part.ly +++ b/mutopia/Coriolan/violoncello-part.ly @@ -7,7 +7,7 @@ enteredby = "JCN"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "global.ly" \include "violoncello.ly" diff --git a/mutopia/Coriolan/violoncello.ly b/mutopia/Coriolan/violoncello.ly index 070c820f63..28ffd4c402 100644 --- a/mutopia/Coriolan/violoncello.ly +++ b/mutopia/Coriolan/violoncello.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; violoncello = \notes \relative c { c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 | diff --git a/mutopia/D.Scarlatti/progress.ly b/mutopia/D.Scarlatti/progress.ly index caf9418923..95aecf997d 100644 --- a/mutopia/D.Scarlatti/progress.ly +++ b/mutopia/D.Scarlatti/progress.ly @@ -807,4 +807,4 @@ Bar_number_engraver;}} ---------------------------------------------------- -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/D.Scarlatti/sonata-k1-l366.ly b/mutopia/D.Scarlatti/sonata-k1-l366.ly index e135d8343a..18b3e31933 100644 --- a/mutopia/D.Scarlatti/sonata-k1-l366.ly +++ b/mutopia/D.Scarlatti/sonata-k1-l366.ly @@ -266,4 +266,4 @@ s1 \paper{barsize=50.0; \translator {\StaffContext \consists Bar_number_engraver;}} } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/D.Scarlatti/sonata-k2-l388.ly b/mutopia/D.Scarlatti/sonata-k2-l388.ly index af3e3b6c3d..27fa3e2c83 100644 --- a/mutopia/D.Scarlatti/sonata-k2-l388.ly +++ b/mutopia/D.Scarlatti/sonata-k2-l388.ly @@ -336,4 +336,4 @@ g,4. | Bar_number_engraver;}} } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/D.Scarlatti/sonata-k3-l378.ly b/mutopia/D.Scarlatti/sonata-k3-l378.ly index 7f86194155..fcd51d8fae 100644 --- a/mutopia/D.Scarlatti/sonata-k3-l378.ly +++ b/mutopia/D.Scarlatti/sonata-k3-l378.ly @@ -251,4 +251,4 @@ LHtoL = { \tolower \stemdown } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/D.Scarlatti/sonata-k4-l390.ly b/mutopia/D.Scarlatti/sonata-k4-l390.ly index bffe458f17..e4fe831087 100644 --- a/mutopia/D.Scarlatti/sonata-k4-l390.ly +++ b/mutopia/D.Scarlatti/sonata-k4-l390.ly @@ -311,4 +311,4 @@ s8 [c''16 g'8 fis'16] [bes'' g' f' ees'] | \paper{barsize=50.0; \translator {\StaffContext \consists Bar_number_engraver;}} } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/D.Zipoli/verso_2.ly b/mutopia/D.Zipoli/verso_2.ly index 524878c603..90984120b2 100644 --- a/mutopia/D.Zipoli/verso_2.ly +++ b/mutopia/D.Zipoli/verso_2.ly @@ -17,7 +17,7 @@ title = "Verso II"; under the Gnu Public Licence. %} -\version "1.0.20"; +\version "1.0.21"; $voice_one = \notes \relative c' { a'2 bes4. [c16 bes] | a4 d ~ d c ~ | c b ~ [b8 a] a4 ~| diff --git a/mutopia/E.Satie/gnossienne-4.ly b/mutopia/E.Satie/gnossienne-4.ly index c2ecc576f9..fc2f0b7a1e 100644 --- a/mutopia/E.Satie/gnossienne-4.ly +++ b/mutopia/E.Satie/gnossienne-4.ly @@ -12,7 +12,7 @@ Tested Features: cross staff beams and slurs, grace notes, no bars %} -\version "1.0.20"; +\version "1.0.21"; \include "nederlands.ly" diff --git a/mutopia/E.Satie/petite-ouverture-a-danser.ly b/mutopia/E.Satie/petite-ouverture-a-danser.ly index 4216696d5a..397be40bb6 100644 --- a/mutopia/E.Satie/petite-ouverture-a-danser.ly +++ b/mutopia/E.Satie/petite-ouverture-a-danser.ly @@ -12,7 +12,7 @@ Tested Features: %} -\version "1.0.20"; +\version "1.0.21"; \include "nederlands.ly" diff --git a/mutopia/F.Schubert/standchen-16.ly b/mutopia/F.Schubert/standchen-16.ly index 2ebcf919e3..d38c8cce4d 100644 --- a/mutopia/F.Schubert/standchen-16.ly +++ b/mutopia/F.Schubert/standchen-16.ly @@ -9,6 +9,6 @@ description = "A schubert song in 16 pt"; copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; \include "standchen.ly" diff --git a/mutopia/F.Schubert/standchen-20.ly b/mutopia/F.Schubert/standchen-20.ly index 9d32796aa8..9ae5a8c5d8 100644 --- a/mutopia/F.Schubert/standchen-20.ly +++ b/mutopia/F.Schubert/standchen-20.ly @@ -9,7 +9,7 @@ copyright = "public domain"; description = "A schubert song in 20 pt"; } -\version "1.0.20"; +\version "1.0.21"; % fool make-website % \include "standchen.ly"; diff --git a/mutopia/GNUmakefile b/mutopia/GNUmakefile index aecac4abce..7cbaeea0ed 100644 --- a/mutopia/GNUmakefile +++ b/mutopia/GNUmakefile @@ -9,7 +9,7 @@ LOCALSTEPMAKE_TEMPLATES=mutopia include $(depth)/make/stepmake.make -EXTRA_DIST_FILES += TODO +EXTRA_DIST_FILES += diff --git a/mutopia/Hymns/diademata.ly b/mutopia/Hymns/diademata.ly index 61a8eac1c2..99e3b59d1d 100644 --- a/mutopia/Hymns/diademata.ly +++ b/mutopia/Hymns/diademata.ly @@ -6,7 +6,7 @@ date = "1868"; title = "Diademata"; metre = "6 6. 8 6. D"; } -\version "1.0.20"; +\version "1.0.21"; sop=\notes \transpose c''{ ees2 | ees4 ees4 g2 g2 | c'1. \bar "||"; diff --git a/mutopia/Hymns/laudatedom.ly b/mutopia/Hymns/laudatedom.ly index f208db7e27..5078d01f70 100644 --- a/mutopia/Hymns/laudatedom.ly +++ b/mutopia/Hymns/laudatedom.ly @@ -4,7 +4,7 @@ composer = "Parry"; metre = "10 10 . 11 11"; } -\version "1.0.20"; +\version "1.0.21"; sop = \notes \transpose c''{ f4 | d' bes c' | f2 \bar "||"; diff --git a/mutopia/Hymns/maccabaeus.ly b/mutopia/Hymns/maccabaeus.ly index 378f138a09..6a7ba8e9b7 100644 --- a/mutopia/Hymns/maccabaeus.ly +++ b/mutopia/Hymns/maccabaeus.ly @@ -7,7 +7,7 @@ title = "Maccabaeus"; metre = "10 11. 11 11. and refrain"; } -\version "1.0.20"; +\version "1.0.21"; sop=\notes \relative c'' { b2 gis4. a8 |b2 e,2 | diff --git a/mutopia/Hymns/ode.ly b/mutopia/Hymns/ode.ly index 3cf2fd36bf..9026a41041 100644 --- a/mutopia/Hymns/ode.ly +++ b/mutopia/Hymns/ode.ly @@ -7,7 +7,7 @@ title = "Ode to Joy"; metre = "8 7 8 7 D"; } -\version "1.0.20"; +\version "1.0.21"; sop=\notes \relative c'' { b4 b c d | d c b a | g g a b | b4. a8 a2 \bar "||"; diff --git a/mutopia/Hymns/stille.ly b/mutopia/Hymns/stille.ly index 4dd7397fa1..3c3a619e04 100644 --- a/mutopia/Hymns/stille.ly +++ b/mutopia/Hymns/stille.ly @@ -8,7 +8,7 @@ poet = "Joseph Mohr"; } -\version "1.0.20"; +\version "1.0.21"; global=\notes { \time 6/4; diff --git a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly index 5f7be0b367..f2b28b3581 100644 --- a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly +++ b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Allemande.ly @@ -4,7 +4,7 @@ piece = "Allemande"; } -\version "1.0.20"; +\version "1.0.21"; global = \notes{ \time 4/4; diff --git a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly index b5d1f9fd4b..5469e6bf52 100644 --- a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly +++ b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Capriccio.ly @@ -10,7 +10,7 @@ %% %% Noe liknende skjer også i mellom andre og tredje stemme i takt 28 -\version "1.0.20"; +\version "1.0.21"; global = \notes{ \time 2/4; @@ -258,9 +258,9 @@ vTwo = \context Voice = voiceTwo \notes\relative c{ % ??? % What have i misunderstood? I want the note_head not to collide with % i hotehead i vOne - \property Voice.hshift = -1 + \property Voice.horizontalNoteShift = -1 d - \property Voice.hshift = 0 + \property Voice.horizontalNoteShift = 0 c4 b8 | } vThree = \context Voice = voiceThree \notes\relative c{ diff --git a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly index 209c1f86c4..1a4ec05b46 100644 --- a/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly +++ b/mutopia/J.S.Bach/Cembalo-Partitas/Partita_II_Sinfonia.ly @@ -10,7 +10,7 @@ copyright = "Public Domain"; } -\version "1.0.20"; +\version "1.0.21"; global = \notes { \time 4/4; @@ -31,7 +31,7 @@ hoyreOpp = \notes\relative c'' { bes4 r16 [bes,16 bes. c32] [des8. des16] \context Staff < { \stemup e4 } - { \stemup \property Voice.hshift = 1 [des16 c32 bes c16. g32] } + { \stemup \property Voice.horizontalNoteShift = 1 [des16 c32 bes c16. g32] } > %4 f4 \stemboth r16 [f g. as32] \stemup d,4 r16 [d g. es32] | @@ -40,7 +40,7 @@ hoyreOpp = \notes\relative c'' { <[es8. c> ] \context Staff < { \stemup fis4 } - { \stemup \property Voice.hshift = 1 [es16 d32 c d16. a32] } + { \stemup \property Voice.horizontalNoteShift = 1 [es16 d32 c d16. a32] } > g2 } @@ -80,7 +80,7 @@ venstreNed = \notes\relative c{ c4 r c r | r c c r | c r r c | c r r16 [c c. bes32] bes4 | r16 [bes bes. as32] as4_"tr" g r16 [d' d. es32] | \context Staff < - { \stemdown \property Voice.hshift = 1 [f8. f16] [b,8. b16] g4 r | } + { \stemdown \property Voice.horizontalNoteShift = 1 [f8. f16] [b,8. b16] g4 r | } { \stemdown s4 g} > r g g2 diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly index 229585501f..632aad0510 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.16"; +\version "1.0.21"; \include "allemande-urtext.ly"; @@ -23,14 +23,14 @@ allemande_cello_global = \notes{ \time 4/4; \key f; \clef bass; - \repeat 2 { + \repeat "semi" 2 { \partial 16; s16 s1*11 | s2 s4 s8 \partial 16*15; s16 - } \repeat 2 { + } \repeat "semi" 2 { % urg s32 \partial 16; s32 s1*11 @@ -53,6 +53,7 @@ allemande_cello_staff = \context Staff < \paper{ \include "scs-paper.ly"; gourlay_maxmeasures = 3.0; + } \midi{ \tempo 4 = 45; } \header{ piece = "Allemande"; } diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly index a1215a3363..3b4fda0013 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly @@ -11,6 +11,8 @@ n = { \slurnormal } d = { \slurdotted } comma = "\\sethuge\\ \\ ," +phrasingcomma = { } % { \bar "empty"; \mark "'"; \nobreak } + allemande_a = \context Staff \notes \relative c { \context Voice=i \stemup @@ -55,12 +57,12 @@ allemande_a = \context Staff \notes \relative c { \n a()f' g,()f e g'( a )bes | % :-( % bes( a g )f^\comma - bes( a g )f^"\\sethuge{\\ \\ '}" + bes( a g )f \phrasingcomma a()e f()d bes d(f)a d()a bes()g | %21 a,(\n)g'(\n cis())d e()g, a()e f()d bes()d \d gis, f'(e)d | % \n d( cis b )a^\comma c(a)fis d' c a( b )d - \n d( cis b )a^"\\sethuge\\ \\ ," + \n d( cis b )a \phrasingcomma %^"\\sethuge\\ \\ ," c(a)fis d' c a( b )d f!(d )gis, d' | %23 @@ -104,4 +106,4 @@ allemande = \context Staff \notes< > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly index 2c80b4b233..f2797a3ca2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly @@ -91,4 +91,4 @@ courante = \context Staff \notes< \$courante_b > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly index a7e752eec8..fe92ef610c 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly @@ -106,4 +106,4 @@ gigue = \notes< \$gigue_b > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly index d7003409d4..0890faa692 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly @@ -16,7 +16,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.16"; +\version "1.0.21"; \include "menuetto-urtext.ly"; @@ -24,9 +24,10 @@ menuetto_i_cello_global = \notes{ \time 3/4; \key f; \clef bass; - \repeat 2 { + \repeat "semi" 2 { \skip 2.*8; - } \repeat 2 { + } + \repeat "semi" 2 { \skip 2.*1; \slurdotted \skip 2.*14; @@ -79,9 +80,10 @@ menuetto_ii_cello_global = \notes{ \time 3/4; \key D; \clef bass; - \repeat 2 { + \repeat "semi" 2 { \skip 2.*8; - } \repeat 2 { + } + \repeat "semi" 2 { \skip 2.*1; \slurdotted \skip 2.*14; @@ -101,6 +103,7 @@ menuetto_ii_cello_staff = \context Staff < \paper{ \include "scs-paper.ly"; gourlay_maxmeasures = 7.0; + \translator{ \VoiceContext beamAutoEnd_8 = "3/4"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly index da320dce16..fb729e383e 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly @@ -21,7 +21,7 @@ menuetto_i_a = \context Staff \notes \relative c { d8( e16 )f | \slurdotted e8( d cis )e a,()g | - a4 ~ d cis | + a4 () d cis | g'8( f e )f d() c | %13 bes2 c4 | @@ -35,7 +35,7 @@ menuetto_i_a = \context Staff \notes \relative c { % < d,8 bes'(> )a | bes8()a | c8( bes a )bes g()bes | - d4 ~ cis d | + d4 () cis d | g,8 f g e f4 | g,8 g' <{e4.^\trill d8 } a4.> ~ | | @@ -57,7 +57,7 @@ menuetto_i_b = \context Staff \notes \relative c { g8 \skip 8*5; | f2 e4 d8 \skip 8*5; | - g4 ~ f e + g4 () f e f8 \skip 8*5; | \skip 2.*3; | es8 \skip 8*3; d4 | @@ -112,8 +112,8 @@ menuetto_i_b_voice_urg_urg = \notes< > menuetto_i = \context Staff \notes< - { \$menuetto_i_a_voice_urg_urg } - { \$menuetto_i_b_voice_urg_urg } + \repeat "semi" 2 { \$menuetto_i_a_voice_urg_urg } + \repeat "semi" 2 { \$menuetto_i_b_voice_urg_urg } > menuetto_ii = \context Staff\notes \relative c { @@ -156,4 +156,4 @@ menuetto_ii = \context Staff\notes \relative c { d2. } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly index 1f6b58cb5f..7b56811271 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.20"; +\version "1.0.21"; \include "prelude-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly index d3237c389f..7445345cd2 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly @@ -280,4 +280,4 @@ prelude = \context Staff \notes< \$prelude_b > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly index b68aafee14..36defc8198 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-viola.ly @@ -15,7 +15,7 @@ copyright = "public domain"; dotted slurs %} -\version "1.0.20"; +\version "1.0.21"; \include "prelude-urtext.ly"; diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly index 1ecb556ba4..dba20e9cbc 100644 --- a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly +++ b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly @@ -92,4 +92,4 @@ sarabande = \context Staff \notes< \$sarabande_b > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/viola-i.ly b/mutopia/J.S.Bach/viola-i.ly index 41f00eb5eb..61e33e7e0d 100644 --- a/mutopia/J.S.Bach/viola-i.ly +++ b/mutopia/J.S.Bach/viola-i.ly @@ -16,4 +16,4 @@ $viola_i_staff = \context Staff = viola < \clef alto; \$global_i > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/violino-viola.ly b/mutopia/J.S.Bach/violino-viola.ly index 97081d2e98..7295ee78d0 100644 --- a/mutopia/J.S.Bach/violino-viola.ly +++ b/mutopia/J.S.Bach/violino-viola.ly @@ -30,4 +30,4 @@ copyright = "Public Domain"; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/violino-violoncello.ly b/mutopia/J.S.Bach/violino-violoncello.ly index 3443a8d4aa..315135b5b1 100644 --- a/mutopia/J.S.Bach/violino-violoncello.ly +++ b/mutopia/J.S.Bach/violino-violoncello.ly @@ -30,4 +30,4 @@ copyright = "Public Domain"; } } -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/violoncello-i.ly b/mutopia/J.S.Bach/violoncello-i.ly index cd0938f961..18900b1617 100644 --- a/mutopia/J.S.Bach/violoncello-i.ly +++ b/mutopia/J.S.Bach/violoncello-i.ly @@ -28,4 +28,4 @@ $violoncello_i_staff = \context Staff = violoncello < \clef bass; \$global_i > -\version "1.0.20"; +\version "1.0.21"; diff --git a/mutopia/J.S.Bach/wtk1-fugue1.ly b/mutopia/J.S.Bach/wtk1-fugue1.ly index 8da979849b..b00149f495 100644 --- a/mutopia/J.S.Bach/wtk1-fugue1.ly +++ b/mutopia/J.S.Bach/wtk1-fugue1.ly @@ -11,7 +11,7 @@ copyright = "Public Domain"; %{ %} -\version "1.0.20"; +\version "1.0.21"; global = diff --git a/mutopia/J.S.Bach/wtk1-fugue2.ly b/mutopia/J.S.Bach/wtk1-fugue2.ly index 606dfabb85..e8e00e53f5 100644 --- a/mutopia/J.S.Bach/wtk1-fugue2.ly +++ b/mutopia/J.S.Bach/wtk1-fugue2.ly @@ -19,7 +19,7 @@ * auto beaming %} -\version "1.0.20"; +\version "1.0.21"; \include "nederlands.ly" % for correct parsing of note names diff --git a/mutopia/J.S.Bach/wtk1-prelude1.ly b/mutopia/J.S.Bach/wtk1-prelude1.ly index 6f74810991..e0d8f711f7 100644 --- a/mutopia/J.S.Bach/wtk1-prelude1.ly +++ b/mutopia/J.S.Bach/wtk1-prelude1.ly @@ -8,7 +8,7 @@ enteredby = "Shay Rojansky"; copyright = "Public Domain"; } -\version "1.0.20"; +\version "1.0.21"; global = \notes { diff --git a/mutopia/N.W.Gade/brass.ly b/mutopia/N.W.Gade/brass.ly index a7320929c4..f31efdade5 100644 --- a/mutopia/N.W.Gade/brass.ly +++ b/mutopia/N.W.Gade/brass.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; corI=\notes\relative c'' { \key c; diff --git a/mutopia/N.W.Gade/strings.ly b/mutopia/N.W.Gade/strings.ly index 168c1fa52f..f53c84e4f8 100644 --- a/mutopia/N.W.Gade/strings.ly +++ b/mutopia/N.W.Gade/strings.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; viI=\notes\relative c'' { diff --git a/mutopia/N.W.Gade/wood.ly b/mutopia/N.W.Gade/wood.ly index 6276f9af7b..8a486eff8f 100644 --- a/mutopia/N.W.Gade/wood.ly +++ b/mutopia/N.W.Gade/wood.ly @@ -1,4 +1,4 @@ -\version "1.0.20"; +\version "1.0.21"; oboe=\notes\relative c'' { \clef "treble"; diff --git a/mutopia/W.A.Mozart/cadenza.ly b/mutopia/W.A.Mozart/cadenza.ly index 8eab69c625..88b7220fd6 100644 --- a/mutopia/W.A.Mozart/cadenza.ly +++ b/mutopia/W.A.Mozart/cadenza.ly @@ -13,7 +13,7 @@ Tested Features: cadenza mode Ugh.. Wish we had grace notes.... It adds another dimension to this piece of music. %} -\version "1.0.20"; +\version "1.0.21"; cad = \notes \relative c' { diff --git a/mutopia/W.A.Mozart/horn-concerto-3.ly b/mutopia/W.A.Mozart/horn-concerto-3.ly index a5d5b6cd8f..dda8a525ee 100644 --- a/mutopia/W.A.Mozart/horn-concerto-3.ly +++ b/mutopia/W.A.Mozart/horn-concerto-3.ly @@ -9,7 +9,7 @@ copyright = "public domain"; } -\version "1.0.20"; +\version "1.0.21"; allegro = \notes diff --git a/mutopia/gallina.ly b/mutopia/gallina.ly index 432a60cc1b..e8b434fe69 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.18"; +\version "1.0.21"; global = \notes { \property StaffGroup.timeSignatureStyle = "old" diff --git a/scripts/abc-2-ly.py b/scripts/abc-2-ly.py index b818d04351..b6827083f3 100644 --- a/scripts/abc-2-ly.py +++ b/scripts/abc-2-ly.py @@ -8,7 +8,7 @@ # program_name = 'abc-to-ly' -version = '0.1' +version = '@TOPLEVEL_VERSION@' import __main__ import getopt import sys @@ -22,6 +22,7 @@ global_voice_stuff = [] default_len = 4 global_key = [0] * 7 # UGH DIGITS='0123456789' +HSPACE=' \t' def gcd (a, b): while a % b: @@ -171,6 +172,30 @@ def compute_key (k): return key_table +tup_lookup = { + '3' : '2/3', + '4' : '4/3', + '6' : '4/6', + } + + +def try_parse_tuplet_begin (str, state): + if str and str[0] in DIGITS: + dig = str[0] + str = str[1:] + state.parsing_tuplet = 1 + + print '\\times %s {' % tup_lookup[dig] + return str + +def try_parse_group_end (str, state): + if str and str[0] in HSPACE: + str = str[1:] + if state.parsing_tuplet: + state.parsing_tuplet = 0 + print '}' + return str + def try_parse_header_line (ln): m = re.match ('^(.): *(.*)$', ln) @@ -180,6 +205,8 @@ def try_parse_header_line (ln): if g == 'T': header['title'] = a if g == 'M': + if a == 'C': + a = '4/4' global_voice_stuff.append ('\\time %s;' % a) if g == 'K': __main__.global_key =compute_key (a)# ugh. @@ -228,7 +255,7 @@ def octave_to_mudela_quotes (o): def parse_num (str): durstr = '' - while str[0] in DIGITS: + while str and str[0] in DIGITS: durstr = durstr + str[0] str = str[1:] @@ -252,6 +279,7 @@ class Parser_state: def __init__ (self): self.next_dots = 0 self.next_den = 1 + self.parsing_tuplet = 0 # WAT IS ABC EEN ONTZETTENDE PROGRAMMEERPOEP ! @@ -259,7 +287,10 @@ def try_parse_note (str, parser_state): mud = '' slur_begin =0 - if str[0] == '(': + if not str: + return str + + if str[0] == '(': slur_begin = 1 str = str[1:] @@ -342,34 +373,75 @@ def junk_space (str): return str + +def try_parse_guitar_chord (str): + if str and str[0] == '"': + str = str[1:] + gc = '' + while str and str[0] != '"': + gc = gc + str[0] + str = str[1:] + + if str: + str = str[1:] + + print "guitar chord: %s\n" % gc + + return str + def try_parse_escape (str): - if str [0] != '\\': + if not str or str [0] != '\\': return str str = str[1:] - if str[0] == 'K': - compute_key () + if str and str[0] == 'K': + key_table = compute_key () return str def try_parse_bar (str): - if str[0] == '|': + if str and str[0] == '|': + bs = '' str = str[1:] + if str: + if str[0] == ']': + bs = '|.' + if str[0] == '|': + bs = '||' + + if bs: + print '\\bar "%s";' % bs return str +def try_parse_chord_delims (str): + if str and str[0] == '[': + str = str[1:] + print '<' + + if str and str[0] == ']': + str = str[1:] + print '>' + + return str +# Try nibbling characters off until the line doesn't change. def try_parse_body_line (ln, state): prev_ln = '' - while ln and ln != prev_ln: + while ln != prev_ln: prev_ln = ln + ln = try_parse_chord_delims (ln) ln = try_parse_note (ln, state) ln = try_parse_bar (ln) - ln = junk_space (ln) ln = try_parse_escape (ln) + ln = try_parse_guitar_chord (ln) + ln = try_parse_tuplet_begin (ln, state) + ln = try_parse_group_end (ln, state) + ln = junk_space (ln) + if ln: - print 'Huh %s' % ln + print 'Huh? Don\'t understand `%s\'' % ln @@ -396,12 +468,14 @@ def parse_file (fn): def identify(): - print '%s %s' % (program_name, version) + print '%s from LilyPond %s' % (program_name, version) def help (): print r""" This is a disfunctional ABC to mudela convertor. It only gulps input, and -says huh when confused. Does not do chords. Go ahead and fix me. +says huh when confused. Go ahead and fix me. + +Usage: abc-2-ly INPUTFILE -h, --help this help. """