Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely File Documentation/notation/spacing.itely (right): https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely#newcode1857 Documentation/notation/spacing.itely:1857: @end lilypond On 2014/10/08 05:01:40, Keith wrote: Why not store the common music in a variable, and show \score {\music} \discaredOriginalBreaks \score {\music} ? Because it wouldn't work that way. \discardOriginalBreaks would be interpreted when the command is written. So the change doesn't have an effect when the variable is called the second time (but actually it's not the use case to change the behaviour along the way of a score). https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Am 08.10.2014 00:30, schrieb nine.fierce.ball...@gmail.com: On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: Important: * There should be regression tests. OK. (but only *if* the patch should be accepted ...) Musing: * Why not use tags? (Example below.) Because that requires the command definition to be done locally or in a library. The point of the patch is not to make original breaks *possible* but to make them *available*. * Does this implementation make it possible to set the option from the lilypond command line? Yes, but not as a command line option but using the -e option defining the configuration variable * When using original breaks, wouldn't one also want original page size, staff size, etc.? * What about hundreds of other features of the original edition? IMO these are different things. The detailed aspects of an original edition are a matter of a style sheet - if you want to mimick them. What I am talking about is a tool to improve the user experience for music entry or proof-reading. It is extremely practical to have identical breaks when you have to match the original manuscript and the compiled LilyPond output in a score of 100+ pages. But of course you don't want to hardcode these breaks and prevent LilyPond from doing its own breaking. So what I want is a way to be able to enter the original manuscript's breaks in the input file and switch them on and off. And I would really love to see that being part of LilyPond itself and not only possible to implement in a library. Firstly because I would like *all* LilyPond users to have that available and secondly because I would like to add this as a Layout Control Option to Frescobaldi. Urs ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Urs Liska u...@openlilylib.org writes: And I would really love to see that being part of LilyPond itself and not only possible to implement in a library. Firstly because I would like *all* LilyPond users to have that available and secondly because I would like to add this as a Layout Control Option to Frescobaldi. When those goals conflict with placing specific functionality in a library, we have an infrastructure problem. We won't solve that problem by cramming everything into the core, not least of all because such specific solutions cannot really reliably be turned into a one-size-fits-all approach. So it is important _not_ to have shrinkwrapped functionality for a particular purpose _forced_ onto users but have it loadable on demand. And be able to offer choice between one or several different solutions as well as rolling your own. -- David Kastrup ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Am 09.10.2014 10:44, schrieb David Kastrup: Urs Liska u...@openlilylib.org writes: And I would really love to see that being part of LilyPond itself and not only possible to implement in a library. Firstly because I would like *all* LilyPond users to have that available and secondly because I would like to add this as a Layout Control Option to Frescobaldi. When those goals conflict with placing specific functionality in a library, we have an infrastructure problem. We won't solve that problem by cramming everything into the core, not least of all because such specific solutions cannot really reliably be turned into a one-size-fits-all approach. So it is important _not_ to have shrinkwrapped functionality for a particular purpose _forced_ onto users but have it loadable on demand. And be able to offer choice between one or several different solutions as well as rolling your own. My approach *is* loadable on demand (just as the guitar fretboards). What *could* make sense in my opinion is instead of adding secondary files to the /ly directory adding them to a separate directory which could contain such add-ons. Is there anything that makes my suggestion less general than, say, the mentioned guitar fretboards? ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Urs Liska u...@openlilylib.org writes: Am 09.10.2014 10:44, schrieb David Kastrup: Urs Liska u...@openlilylib.org writes: And I would really love to see that being part of LilyPond itself and not only possible to implement in a library. Firstly because I would like *all* LilyPond users to have that available and secondly because I would like to add this as a Layout Control Option to Frescobaldi. When those goals conflict with placing specific functionality in a library, we have an infrastructure problem. We won't solve that problem by cramming everything into the core, not least of all because such specific solutions cannot really reliably be turned into a one-size-fits-all approach. So it is important _not_ to have shrinkwrapped functionality for a particular purpose _forced_ onto users but have it loadable on demand. And be able to offer choice between one or several different solutions as well as rolling your own. My approach *is* loadable on demand (just as the guitar fretboards). What *could* make sense in my opinion is instead of adding secondary files to the /ly directory adding them to a separate directory which could contain such add-ons. Is there anything that makes my suggestion less general than, say, the mentioned guitar fretboards? Yes. The guitar fretboards concern a whole family of instruments literally millions of people play. Your extension makes only very limited sense for scores reproducing the original breaks of a single canonical original document. That's a rather specific situation. If the breaks in _one_ version of a score are so important, why is that the _only_ conceivable version of the score with relevant breaks? And if that is the only conceivable version, why would we put the breaks in conditionally? If they are disabled, we could be producing _another_ document with breaks that nobody should ever want to reproduce. -- David Kastrup ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Am 09.10.2014 11:27, schrieb David Kastrup: Urs Liska u...@openlilylib.org writes: Am 09.10.2014 10:44, schrieb David Kastrup: Urs Liska u...@openlilylib.org writes: And I would really love to see that being part of LilyPond itself and not only possible to implement in a library. Firstly because I would like *all* LilyPond users to have that available and secondly because I would like to add this as a Layout Control Option to Frescobaldi. When those goals conflict with placing specific functionality in a library, we have an infrastructure problem. We won't solve that problem by cramming everything into the core, not least of all because such specific solutions cannot really reliably be turned into a one-size-fits-all approach. So it is important _not_ to have shrinkwrapped functionality for a particular purpose _forced_ onto users but have it loadable on demand. And be able to offer choice between one or several different solutions as well as rolling your own. My approach *is* loadable on demand (just as the guitar fretboards). What *could* make sense in my opinion is instead of adding secondary files to the /ly directory adding them to a separate directory which could contain such add-ons. Is there anything that makes my suggestion less general than, say, the mentioned guitar fretboards? Yes. The guitar fretboards concern a whole family of instruments literally millions of people play. Your extension makes only very limited sense for scores reproducing the original breaks of a single canonical original document. That's a rather specific situation. Now I start to see your misunderstanding. If the breaks in _one_ version of a score are so important, why is that the _only_ conceivable version of the score with relevant breaks? Where did I say that such a version is the only conceivable version of the score? And if that is the only conceivable version, why would we put the breaks in conditionally? Because one wouldn't want to *finally* produce a version of the score with the breaks of the original score. If that's my interest (which then would actually be a rather specific situation) I can simply use hardcoded \break commands. The whole point of these conditional commands is to have a tool (maybe you can call it an editing mode) to match LilyPond's output with the *one* version of the score I'm copying from, that is the one I have on my desktop in front of me. And such a tool would (positively) affect a whole family of music engravers, namely those who are engraving music from an existing copy. I think the ratio between these and music engravers who don't do this is significantly closer to 50:50 than the ration between engravers writing music for fretboard instruments and those who don't. If they are disabled, we could be producing _another_ document with breaks that nobody should ever want to reproduce. If they are disabled (after music entry and proof-reading has been completed) we will produce a document that benefits from LilyPond's quality. ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
I've not followed the corresponding email discussion closely, and maybe I've missed something, but how is this better than simply using \obreak for an original break, and \nbreak for a new, required, break, having defined obreak = \break nbreak = in order to obtain the original breaks. And then simply redefining obreak = nbreak = \break to remove the original breaks and activate the new ones? And equivalently for page breaks. This has the advantage that newly inserted breaks don't interfere with the original ones. It would also be trivial to remove all these editing aids finally with a simple global edits. That seems so simple anyone can do it without adding anything to the base code and almost a page to the documentation. Trevor https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
On Thu, Oct 09, 2014 at 10:21:45AM +, tdanielsmu...@googlemail.com wrote: I've not followed the corresponding email discussion closely, and maybe I've missed something, but how is this better than simply using \obreak for an original break, and \nbreak for a new, required, break, having defined obreak = \break nbreak = ... That seems so simple anyone can do it without adding anything to the base code and almost a page to the documentation. This method is already in the documentation! At least, it used to be... Learning Manual, tips for typesetting or something like that? it's just possible it was moved to Notation or Usage at some point. But it was definitely in the docs ten years ago. (yes, literally 10 years ago. Mao, where did the time go?) Cheers, - Graham ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
On 2014/10/09 10:21:45, Trevor Daniels wrote: It would also be trivial to remove all these editing aids finally with a simple global edits. I think the basic point was to get different aspects of the same document _without_ doing any edits on it. https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
2014-10-09 12:41 GMT+02:00 Graham Percival gra...@percival-music.ca: On Thu, Oct 09, 2014 at 10:21:45AM +, tdanielsmu...@googlemail.com wrote: I've not followed the corresponding email discussion closely, and maybe I've missed something, but how is this better than simply using \obreak for an original break, and \nbreak for a new, required, break, having defined obreak = \break nbreak = ... That seems so simple anyone can do it without adding anything to the base code and almost a page to the documentation. This method is already in the documentation! At least, it used to be... Learning Manual, tips for typesetting or something like that? it's just possible it was moved to Notation or Usage at some point. But it was definitely in the docs ten years ago. (yes, literally 10 years ago. Mao, where did the time go?) It's actually in Usage: http://lilypond.org/doc/v2.19/Documentation/usage/typesetting-existing-music But it's not enough, you should also use the information provided here: http://lilypond.org/doc/v2.19/Documentation/notation/explicit-breaks ``` There are cases when manual \break or \pageBreak commands are ignored by LilyPond. There are two commands to override this behavior: \override NonMusicalPaperColumn.line-break-permission = ##f \override NonMusicalPaperColumn.page-break-permission = ##f ``` ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
2014-10-09 11:38 GMT+02:00 Urs Liska u...@openlilylib.org: Because one wouldn't want to *finally* produce a version of the score with the breaks of the original score. If that's my interest (which then would actually be a rather specific situation) I can simply use hardcoded \break commands. The whole point of these conditional commands is to have a tool (maybe you can call it an editing mode) to match LilyPond's output with the *one* version of the score I'm copying from, that is the one I have on my desktop in front of me. Urs, I like a lot the idea but a simple example would help to understand the benefits of this patch. I'm currently using \mbreak and two overrides in a \layout that I can easily comment. I'm having problems with commenting on Rietveld through browser atm.. I think that this part is not clear: 1800 While copying or proof-reading music from existing manuscripts 1801 it is useful to have the compiled scores respect the line 1802 and page breaking of the manuscript source. LilyPond provides 1803 the commands @code{\origBreak} and @code{\origLineBreak} that 1804 conditionally create line and page breaks. They are enabled with \origBreak refers to page break? Then call it \origPageBreak.. or at least keep the symmetry in your sentence, i.e. create page and line breaks. ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
On 2014/10/09 08:11:29, uliska wrote: On 2014/10/08 05:01:40, Keith wrote: Why not store the common music in a variable, and show \score {\music} \discaredOriginalBreaks \score {\music} ? Because it wouldn't work that way. \discardOriginalBreaks would be interpreted when the command is written. Oh. I see how it works now. https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely File Documentation/notation/spacing.itely (right): https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely#newcode1842 Documentation/notation/spacing.itely:1842: \discardOriginalBreaks In that case you could do everything you describe in this documentation by typing origBreak = {} %\break here instead of \discardOriginalBreaks, and then we don't need the include file. Do you plan to add a command-line option like -doriginal-breaks so you can switch behaviors from the command line? https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
Reviewers: , Description: Add original-breaks.ly commands The commands defined in this patch allow the user to insert breaks (line and page) from the original manuscript that are conditionally respected or discarded. This is very useful for entering and proof-reading music from larger scores. Actually I would prefer having them enabled automatically (i.e. parsed on initialisation without requiring to include the file explicitly. But I think the way it is done in the patch will make it easier to accept its inclusion. Two commits: Add docs for original-breaks.ly Add original-breaks.ly Define commands: - origBreak - origPageBreak Depending on the presence and state of variables - keep-original-breaks - keep-original-page-breaks these result in a \break or \pageBreak or nothing. Default is #t (so when the file is included original breaks are automatically respected). Additionally define top-level commands - \keepOriginalBreaks - \discardOriginalBreaks - \keepOriginalPageBreaks - \discardOriginalPageBreaks The idea is to let the user enter breaks from the manuscript she is copying. While working on the content of the score it is very handy to have LilyPond compile the score with the breaks of the original manuscript, but of course one doesn't want to enter hard-coded breaks. Please review this at https://codereview.appspot.com/150670043/ Affected files (+148, -0 lines): M Documentation/notation/spacing.itely A ly/original-breaks.ly ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: On 2014/10/07 08:37:06, uliska wrote: Important: * There should be regression tests. Musing: * Why not use tags? (Example below.) * Does this implementation make it possible to set the option from the lilypond command line? * When using original breaks, wouldn't one also want original page size, staff size, etc.? * What about hundreds of other features of the original edition? \version 2.19.0 originalBreak = { \tag #'originalBreak \break } music = { c'1 \originalBreak 1 } \score { \new Staff { \music } } \score { \new Staff { \removeWithTag #'originalBreak \music } } https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
On 2014/10/07 22:30:53, Dan Eble wrote: * When using original breaks, wouldn't one also want original page size, staff size, etc.? That would not map well to tags. Not without additional facilities, I guess. Still, I think that tags at least address a large enough problem space that making them available on the command line makes sense. And we can still add a macro like (define-macro (tagged tags . body) `(if (check-against-document-options ,tags) (begin ,@body)) to make the document-level tag specification useful in Scheme-provided content as well. https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel
Re: Add original-breaks.ly commands (issue 150670043 by lilyli...@googlemail.com)
For this particular task, you should also show the user that he can define at the top of the input, or in a header file if he uses one, originalBreak = \break and insert before music where we are done with the original breaks, originalBreak = {} %\break That is easy enough to understand, and easy to adapt to other tasks. https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely File Documentation/notation/spacing.itely (right): https://codereview.appspot.com/150670043/diff/1/Documentation/notation/spacing.itely#newcode1857 Documentation/notation/spacing.itely:1857: @end lilypond Why not store the common music in a variable, and show \score {\music} \discaredOriginalBreaks \score {\music} ? https://codereview.appspot.com/150670043/diff/1/ly/original-breaks.ly File ly/original-breaks.ly (right): https://codereview.appspot.com/150670043/diff/1/ly/original-breaks.ly#newcode36 ly/original-breaks.ly:36: origBreak = Almost religiously, LilyPond avoids abbreviation. Maybe originalBreak ? https://codereview.appspot.com/150670043/ ___ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel