make doc and make all
Hey all, I'm for the first time doing semi-complicated doc work w/ the website thing and discovering a bit about the build system in the process. I learned today that `make doc' does not automatically `make all' if there are files that have been touched. Would it be a good idea to roll a make all into make doc? It'd add no more than 10 seconds onto a doc build if nothing in scm/ ps/ mf/ lily/ ps/ /ly has changed (perhaps I'm forgetting a few directories) and would automatically do any necessary compilation if these things have changed. I can't think of a reason that, when launching make doc, someone would not want to be working from the current binary. If this seems like a smart automation, let me know. Cheers, MS ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Recap of my meeting w/ Janek
Hey all, Janek and I talked at length about GSoC and I wanted to give people a little update about the game plan. He plans to tackle 2451, 2452, and 2453 first via a parsing of pango strings to find word prefixes and suffixes and do alignment from where these lie. 2454 will require spacing stubs not unlike the StemStub and SpanBarStub grobs. He may or may not have been influenced by his mentor's design bias for this :) Onto 2457, which will require an engraver in the score context to check the alignment of simultaneous lyrics and override it based on certain melisma conditions. 2459 can then be tackled by creating positioning-done callbacks for objects in Dynamics contexts and having an intermediary spanner grob that handles vertical positioning of these objects. 2455 and 2456 will require an implementation of second-pass spacing after line breaking that will replace get_line_configuration in spacing-spanner.cc with a more robust algorithm that respaces the line based on extra spacing constraints. The idea is that if a more optimal horizontal spacing can be achieved without resulting in ugly vertical spacing, this'll be done. 2461 can be tackled after this - it is an easy fix once 2455 and 2451-2453 have been taken care of, as it requires subtle alignment changes on a second horizontal-spacing pass (ergo 2455) based on the contents of pango strings (ergo 2451-2453). Once the second-pass spacing is in place, 2458 will require an extra step - snap spacing. Snap spacing snaps horizontal spacing to certain ideal states instead of treating it as a continuum. This will remove unwanted small gaps from lyrics. The opposite of snap spacing for issue 2462 is target spacing, where all paper columns of a given length stretch un-uniformly to a given target and then stretch uniformly after this target instead of stretching uniformly all the time. This guarantees that short lyrics will be able to catch up to the spacing of long lyrics on notes of the same duration before these long-lyricked notes are given more horizontal space. With this implemented, 2450 will be solvable, as similar-valued notes will be able to be spaced non-uniformly. The same logic will be generalized to this - 2462 is just an easy test case that allows us to know what works and want doesn't. 2460 is more or less impossible. And there you have it! All comments are appreciated - even though I'm the official mentor, you're certainly all welcome to suggest alternative approaches to the ones outline about. Cheers, MS___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
He plans to tackle 2451, 2452, and 2453 first via a parsing of pango strings to find word prefixes and suffixes and do alignment from where these lie. Quick question: will languages that do not use Latin characters be considered? For example, 2452 is also a problem when working with Slavic languages written in Cyrillic. Aleksandr ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: MIDI with ancient notation
Upon further investigation, I believe this is related to this issue: http://code.google.com/p/lilypond/issues/detail?id=2004 Aleksandr On Wed, May 2, 2012 at 1:39 PM, Aleksandr Andreev aleksandr.andr...@gmail.com wrote: Hello folks, I've been experimenting with what is supported so far for Kievan notation, and I've run in to some problems generating MIDI output. I get the following messages at compile time if I add a \midi block: warning: cannot find or create new `KievanStaff' warning: cannot find or create new `KievanVoice' warning: cannot find or create `Timing' called `' Looking at performer-init.ly, I see that VaticanaStaff and VaticanaVoice have their own Context blocks so that makes me think that KievanStaff and KievanVoice should be implemented similarly. However, if I typeset some Gregorian chant, as in: \include gregorian.ly \score { \new VaticanaStaff \new VaticanaVoice { \[ c'\melisma a \] } \midi { } \layout { } } I get no MIDI output -- the resulting MIDI file appears to consist of a few seconds of rests. There's probably something I'm not doing right. Also, I couldn't find anything about MIDI output with ancient music in the documentation. Help much appreciated as always! Aleksandr ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
On 3 mai 2012, at 14:00, Aleksandr Andreev wrote: He plans to tackle 2451, 2452, and 2453 first via a parsing of pango strings to find word prefixes and suffixes and do alignment from where these lie. Quick question: will languages that do not use Latin characters be considered? For example, 2452 is also a problem when working with Slavic languages written in Cyrillic. Aleksandr Janek's solution is generalized to any pango string, so if pango can read it, LilyPond will be able to typeset it. ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Lilypond miscompiled on Fedora 17
Quoting David Kastrup d...@gnu.org: Pavel Roskin pro...@gnu.org writes: Hello! I mentioned in passing that Fedora 17 (currently in beta) ships Lilypond 2.15.29 that reports bogus bar checks. It turns out that both the current Lilypond from git and Lilypond 2.14.2 are miscompiled on the up-to-date Fedora 17 so they exhibit the same problem. What compiler version are they using? It's gcc 4.7.0. I'm using x86_64. I just checked that Lilypond compiled without optimization or with -O1 instead of -O2 has no problem with that file. An update for gcc was released this morning (gcc 4.7.0-3), and I compiled Lilypond with it with all defaults. Unfortunately, the problem persists. -- Regards, Pavel Roskin ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: make doc and make all
- Original Message - From: m...@apollinemike.com To: Devel Team lilypond-devel@gnu.org Sent: Thursday, May 03, 2012 11:52 AM Subject: make doc and make all Hey all, I'm for the first time doing semi-complicated doc work w/ the website thing and discovering a bit about the build system in the process. I learned today that `make doc' does not automatically `make all' if there are files that have been touched. Would it be a good idea to roll a make all into make doc? It'd add no more than 10 seconds onto a doc build if nothing in scm/ ps/ mf/ lily/ ps/ /ly has changed (perhaps I'm forgetting a few directories) and would automatically do any necessary compilation if these things have changed. I can't think of a reason that, when launching make doc, someone would not want to be working from the current binary. If this seems like a smart automation, let me know. Personally I'd prefer that make doc didn't include make - it may only take a little time, but if you've only changed the docs, why would you want all the binary stuff rechecked? -- Phil Holmes ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Lilypond miscompiled on Fedora 17
Pavel Roskin pro...@gnu.org writes: Quoting David Kastrup d...@gnu.org: Pavel Roskin pro...@gnu.org writes: Hello! I mentioned in passing that Fedora 17 (currently in beta) ships Lilypond 2.15.29 that reports bogus bar checks. It turns out that both the current Lilypond from git and Lilypond 2.14.2 are miscompiled on the up-to-date Fedora 17 so they exhibit the same problem. What compiler version are they using? It's gcc 4.7.0. I'm using x86_64. I just checked that Lilypond compiled without optimization or with -O1 instead of -O2 has no problem with that file. An update for gcc was released this morning (gcc 4.7.0-3), and I compiled Lilypond with it with all defaults. Unfortunately, the problem persists. Any chance to compile using i386? If the problem persisted, it would strongly point to the language frontend of g++ being involved. If it vanishes, it can be either the backend or a general 32/64 bit architecture problem. -- David Kastrup ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: make doc and make all
2012/5/3 m...@apollinemike.com m...@apollinemike.com: Hey all, I'm for the first time doing semi-complicated doc work w/ the website thing and discovering a bit about the build system in the process. I learned today that `make doc' does not automatically `make all' if there are files that have been touched. Would it be a good idea to roll a make all into make doc? It'd add no more than 10 seconds onto a doc build if nothing in scm/ ps/ mf/ lily/ ps/ /ly has changed (perhaps I'm forgetting a few directories) and would automatically do any necessary compilation if these things have changed. I can't think of a reason that, when launching make doc, someone would not want to be working from the current binary. If this seems like a smart automation, let me know. I think that dependencies list for building the binary are waaay longer than for make doc. People could want to try building docs alone. That said, it is not usual that make doc succeeds if there are new snippets which usually require the very latest version of the binary to get them compiled. So yes, in practice 'make all' is usually also needed. -- Francisco Vila. Badajoz (Spain) www.paconet.org , www.csmbadajoz.com ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: make doc and make all
- Original Message - From: Francisco Vila paconet@gmail.com To: m...@apollinemike.com Cc: Devel Team lilypond-devel@gnu.org Sent: Thursday, May 03, 2012 4:18 PM Subject: Re: make doc and make all 2012/5/3 m...@apollinemike.com m...@apollinemike.com: Hey all, I'm for the first time doing semi-complicated doc work w/ the website thing and discovering a bit about the build system in the process. I learned today that `make doc' does not automatically `make all' if there are files that have been touched. Would it be a good idea to roll a make all into make doc? It'd add no more than 10 seconds onto a doc build if nothing in scm/ ps/ mf/ lily/ ps/ /ly has changed (perhaps I'm forgetting a few directories) and would automatically do any necessary compilation if these things have changed. I can't think of a reason that, when launching make doc, someone would not want to be working from the current binary. If this seems like a smart automation, let me know. I think that dependencies list for building the binary are waaay longer than for make doc. People could want to try building docs alone. That said, it is not usual that make doc succeeds if there are new snippets which usually require the very latest version of the binary to get them compiled. So yes, in practice 'make all' is usually also needed. = Not if you're just editing the CG, for example. -- Phil Holmes ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Lilypond miscompiled on Fedora 17
Quoting David Kastrup d...@gnu.org: Any chance to compile using i386? If the problem persisted, it would strongly point to the language frontend of g++ being involved. If it vanishes, it can be either the backend or a general 32/64 bit architecture problem. Fedora 17 i386 has exactly the same problem. Let me try to find the file that needs to be compiled with -O1. I have some ideas how to bisect the problem. I want to write a wrapper around g++ that starts adding -O1 to the command line after N invocations. -- Regards, Pavel Roskin ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
On 3 May 2012 13:07, m...@apollinemike.com m...@apollinemike.com wrote: *2460* is more or less impossible. Why? I don know the details of Lilypond's internals, but a white-out is a rather simple idea, isn't it? Łukasz ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
On 4 mai 2012, at 00:37, Łukasz Czerwiński wrote: On 3 May 2012 13:07, m...@apollinemike.com m...@apollinemike.com wrote: 2460 is more or less impossible. Why? I don know the details of Lilypond's internals, but a white-out is a rather simple idea, isn't it? Łukasz What's hard is creating flexible blocking mechanisms for left-shifting objects. When collisions happen, there is no notion of elasticity - objects are not allowed to touch or they ignore each other. Here, we want something between - objects that can overlap but just by a little. We'd have to redo the spring and rod model at the core of LilyPond, which itself would a summer of lily (if not two or three!). Cheers, MS ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Strange loop executed only once!
On 3 May 2012 04:18, Keith OHara k-ohara5...@oco.net wrote: On Wed, 02 May 2012 17:12:33 -0700, Łukasz Czerwiński milimet...@gmail.com wrote: On 22 April 2012 13:28, Han-Wen Nienhuys hanw...@gmail.com wrote: this also looks a little suspect: Real total_head_length = previous_extents[d].length () + current_extents[d].length (); As for Keith's code: { \time 4/1 \override Score.SpacingSpanner #'packed-spacing = ##t c'1 a b'' c''' g''' a''' } I can see no too much spacing between b'' and c''', and g''' and a''' The notes within the chords are spaced normally, but the chords are too-far separated from each other. It is only a tiny problem. No-one reported noticing the problem in output, only in the code. Well, it's a bug, so it should be at least *tried* to be solved. As I guess, it will need only one change in line: Real total_head_length = previous_extents[d].length () + current_extents[d].length (); so it's doable and therefore desired :) Was that bug already filed or should I do it? It is so closely related to http://code.google.com/p/**lilypond/issues/detail?id=2493http://code.google.com/p/lilypond/issues/detail?id=2493 that I'll just add a note there. Thanks. Anyway, I don't understand: The cause seems to be the decision to scale the ledger from the notecolumn width, I should have set to scale the rod The function set_rods() at http://codereview.appspot.**com/6109046/diff/6001/lily/** ledger-line-spanner.cc#**newcode39http://codereview.appspot.com/6109046/diff/6001/lily/ledger-line-spanner.cc#newcode39 is passed two columns and asked to figure out the space needed for ledgers. Ah, I see... Now I'm starting to understand what's that code about. Thanks :) Now I see that the extents passed to set_rods() include /only/ notes that go on ledgers, so finally I see how HanWen's original suggestion should work. Where do you know it from? Is it this line which make it work so? if (staff_extent.contains (pos)) continue; And where to find what's min_length_fraction for? It is a local variable holding the last parameter to set_rods() so you have to look at how set_rods() is called, and figure out how that last parameter is determined. It comes from some property of a Ledger_line_spanner called minimum-length-fraction that might be talked about http://lilypond.org/doc/v2.**14/Documentation/internals/** ledgerlinespannerhttp://lilypond.org/doc/v2.14/Documentation/internals/ledgerlinespanner I meant the link, not finding usage of a variable which is trivial :) Thanks for the link. I don't understand why minimum-length-fraction is takenn into account while calculating rod.distance_, but let's say someone wise devised such a formula and it works properly :) I'd like to comment set_rods and set_spacing_rods. I'll place for set_rods a comment: /* The extents passed to set_rods() include *only* notes that go on ledgers. */ and for set_spacing_rods: /* This function sets rods to force a proper distance between chords that have some notes on ledger lines. */ Is it correct? I don't understand the whole idea of iterating through all heads: extract_item_set (me, note-heads, heads); for (vsize i = heads.size (); i--;) Which heads would those be? As I guess, the answer is: those that are contained in Ledger_Line_Spanner, but... what is a ledger line spanner, when is it used, where does it lie and which notes will it contain? Just two chords that are neighbours? Why iterating through heads forces the right order of the notes - first notes from the first chord, then from the second one? Łukasz ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
On 4 May 2012 01:08, m...@apollinemike.com m...@apollinemike.com wrote: On 4 mai 2012, at 00:37, Łukasz Czerwiński wrote: On 3 May 2012 13:07, m...@apollinemike.com m...@apollinemike.com wrote: *2460* is more or less impossible. Why? I don know the details of Lilypond's internals, but a white-out is a rather simple idea, isn't it? Łukasz What's hard is creating flexible blocking mechanisms for left-shifting objects. When collisions happen, there is no notion of elasticity - objects are not allowed to touch or they ignore each other. Here, we want something between - objects that can overlap but just by a little. We'd have to redo the spring and rod model at the core of LilyPond, which itself would a summer of lily (if not two or three!). Cheers, MS Aaah, I see... Thanks for the explanation. But as I understand, not everywhere springs and rods are used, e.g. beams collide with many objects and that's ok. If there is a place where I can read about springs and rods in Lilypond, just let me know instead of answering me. Łukasz ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Recap of my meeting w/ Janek
On 4 mai 2012, at 01:23, Łukasz Czerwiński wrote: On 4 May 2012 01:08, m...@apollinemike.com m...@apollinemike.com wrote: On 4 mai 2012, at 00:37, Łukasz Czerwiński wrote: On 3 May 2012 13:07, m...@apollinemike.com m...@apollinemike.com wrote: 2460 is more or less impossible. Why? I don know the details of Lilypond's internals, but a white-out is a rather simple idea, isn't it? Łukasz What's hard is creating flexible blocking mechanisms for left-shifting objects. When collisions happen, there is no notion of elasticity - objects are not allowed to touch or they ignore each other. Here, we want something between - objects that can overlap but just by a little. We'd have to redo the spring and rod model at the core of LilyPond, which itself would a summer of lily (if not two or three!). Cheers, MS Aaah, I see... Thanks for the explanation. But as I understand, not everywhere springs and rods are used, e.g. beams collide with many objects and that's ok. If there is a place where I can read about springs and rods in Lilypond, just let me know instead of answering me. Łukasz There's a file you can read... lily/simple-spacer.cc That is the long and short of the nuts and bolts. You can work backwards from the file to see where the functions in it are called (I believe that it's only in lily/constrained-breaking.cc). Cheers, MS ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
PATCH: Countdown to 20120506
For 20:00 MDT Sunday May 6th Documentation: Issue 2438 http://code.google.com/p/lilypond/issues/detail?id=2438: NR 1.2.3 Add explanation about reminder accidentals and \cadenzaOn - R5976056 http://codereview.appspot.com/5976056/ Cheers, Colin -- I've learned that you shouldn't go through life with a catcher's mitt on both hands. You need to be able to throw something back. -Maya Angelou, poet (1928- ) ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Fix MIDI output for Kievan (issue 6193043)
Reviewers: , Message: Here is a patch that attempts to fix issues with MIDI playback of Kievan notation. Description: Fix MIDI output for Kievan Adding KievanStaff and KievanVoice for MIDI output of Kievan notation. Please review this at http://codereview.appspot.com/6193043/ Affected files: M ly/performer-init.ly Index: ly/performer-init.ly diff --git a/ly/performer-init.ly b/ly/performer-init.ly index 0ad1e2964ee9cab5e4b7b7f030b00f1fed8ffd71..1b60a6393dfba16cfa847f1007f6c496e2523b9d 100644 --- a/ly/performer-init.ly +++ b/ly/performer-init.ly @@ -31,6 +31,7 @@ \consists Staff_performer \consists Key_performer } + \context { \name Global \accepts Score @@ -39,6 +40,17 @@ } \context { + \type Performer_group + \name KievanStaff + \denies Voice + \accepts KievanVoice + \defaultchild KievanVoice + \alias Staff + \consists Staff_performer + \consists Key_performer +} + +\context { \Staff \name DrumStaff midiInstrument = #drums @@ -70,6 +82,17 @@ } \context { + \type Performer_group + \name KievanVoice + \alias Voice + \consists Dynamic_performer + \consists Tie_performer + \consists Note_performer + \consists Beam_performer + \consists Slur_performer +} + +\context { \Voice \remove Note_performer \consists Drum_note_performer @@ -157,6 +180,7 @@ \accepts FretBoards \accepts Lyrics \accepts VaticanaStaff + \accepts KievanStaff \consists Time_signature_performer \consists Control_track_performer ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Fix MIDI output for Kievan (issue 6193043)
Looks like it works, but I think it can (and should) be simplified. If it can't, then LGTM. http://codereview.appspot.com/6193043/diff/1/ly/performer-init.ly File ly/performer-init.ly (right): http://codereview.appspot.com/6193043/diff/1/ly/performer-init.ly#newcode49 ly/performer-init.ly:49: \consists Staff_performer Do these \consists need to be added? Does the \alias Staff bring in the Staff_performer and the Key_performer from the Staff Performer_group? http://codereview.appspot.com/6193043/diff/1/ly/performer-init.ly#newcode88 ly/performer-init.ly:88: \consists Dynamic_performer Again, don't the performers from the Voice performer group get added automatically by the \alias Voice? http://codereview.appspot.com/6193043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Lilypond miscompiled on Fedora 17
Quoting Pavel Roskin pro...@gnu.org: Fedora 17 i386 has exactly the same problem. Let me try to find the file that needs to be compiled with -O1. I have some ideas how to bisect the problem. I want to write a wrapper around g++ that starts adding -O1 to the command line after N invocations. The problematic file is simultaneous-music-iterator.cc I'll try to identify the function tomorrow. -- Regards, Pavel Roskin ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel