Re: Aleatoric / modern notation
Hi Jeffrey and Ben, On Wed, Jan 16, 2013 at 2:13 PM, SoundsFromSound soundsfromso...@gmail.comwrote: I agree - you have done an amazing job with this, thank you so much! Ben Jeffrey Trevino wrote Hi David, I really hope this ends up in Lilypond; you've clearly put a ton of work into this. And it's even commented now! Brilliant. It seems to be working just fine; I'll holler if there are troubles. cheers, Jeff Thank you for your kind words! Ultimately, it would be nice if something like this could get into LilyPond. Though I'm making progress on this, there are some serious issues that I'm having, and I've frankly hit a wall. I've attached the latest version of the file. It enhances the version attached above by adding a bracket with text (for the purpose of specifying a timing). The problems I'm having relate to vertical spacing. Presumably, the Frame, being an inside-staff-object, isn't taken into consideration in vertical spacing. You can see that the Frame is ignored in skyline calculations by uncommenting the line at the top of the file. The situation at the top of the Frame isn't as dire, because there the bracket--an outside-staff object--influences spacing. (Not enough, however.) If you want a demonstration of the bad that can happen, uncomment the lower part of the example. It gets worse if you increase the number of repetitions. You can always limit the staves per page, or move the staves further apart. So this is usable. Obviously, there is a better solution, though. @Mike S,--if you're seeing this, will your current work on skylines allow a fix? --David frameEngraver9.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
I agree - you have done an amazing job with this, thank you so much! Ben Jeffrey Trevino wrote Hi David, I really hope this ends up in Lilypond; you've clearly put a ton of work into this. And it's even commented now! Brilliant. It seems to be working just fine; I'll holler if there are troubles. cheers, Jeff On Sat, Jan 12, 2013 at 10:23 AM, David Nalesnik lt; david.nalesnik@ gt;wrote: Hi Jeff, On Sat, Jan 12, 2013 at 11:37 AM, Jeffrey Trevino jeffrey.trevino2@ wrote: Hi David, I just saw this fix. Thanks for spending so much time tweaking this. Maybe there's a way it can be integrated into the Lilypond code, since you've spent so much time developing it. I'll be using it in a score soon. I've actually been working at this off and on since I sent you that fix, and I've added some functionality. You no longer need to guess at the length of the extender line: you specify its endpoint with the command \frameExtenderEnd. Also, the extender (now a separate grob called FrameExtender) can be broken across lines. There are still some issues to resolve. One of these problems is that the new stencil isn't taken into account in vertical spacing, and this can result in overlaps in extreme cases. (Try moving some of the groups into regions with many ledger lines.) I'm guessing that the difficulty arises because the frame isn't an outside-staff object, but I'm unsure how to proceed. There's some test code in the attached file. Mike Solomon suggested that I handle alignment between the component parts (the frame, the extender, and ultimately a bracket-with-timing affair to encompass the frame and extender) with an alignment grob (as DynamicLineSpanner and the like). This is one angle I'm exploring. (At the moment, uncommenting the \consists line will just draw boxes around the whole affair.) Anyway, I hope this proves helpful. Please let me know if you have any suggestions, or run into difficulties. lt;http://www.jeffreytrevino.com/gt; ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p139671.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, I really hope this ends up in Lilypond; you've clearly put a ton of work into this. And it's even commented now! Brilliant. It seems to be working just fine; I'll holler if there are troubles. cheers, Jeff On Sat, Jan 12, 2013 at 10:23 AM, David Nalesnik david.nales...@gmail.comwrote: Hi Jeff, On Sat, Jan 12, 2013 at 11:37 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, I just saw this fix. Thanks for spending so much time tweaking this. Maybe there's a way it can be integrated into the Lilypond code, since you've spent so much time developing it. I'll be using it in a score soon. I've actually been working at this off and on since I sent you that fix, and I've added some functionality. You no longer need to guess at the length of the extender line: you specify its endpoint with the command \frameExtenderEnd. Also, the extender (now a separate grob called FrameExtender) can be broken across lines. There are still some issues to resolve. One of these problems is that the new stencil isn't taken into account in vertical spacing, and this can result in overlaps in extreme cases. (Try moving some of the groups into regions with many ledger lines.) I'm guessing that the difficulty arises because the frame isn't an outside-staff object, but I'm unsure how to proceed. There's some test code in the attached file. Mike Solomon suggested that I handle alignment between the component parts (the frame, the extender, and ultimately a bracket-with-timing affair to encompass the frame and extender) with an alignment grob (as DynamicLineSpanner and the like). This is one angle I'm exploring. (At the moment, uncommenting the \consists line will just draw boxes around the whole affair.) Anyway, I hope this proves helpful. Please let me know if you have any suggestions, or run into difficulties. http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, I just saw this fix. Thanks for spending so much time tweaking this. Maybe there's a way it can be integrated into the Lilypond code, since you've spent so much time developing it. I'll be using it in a score soon. cheers, Jeff On Tue, Dec 11, 2012 at 3:04 PM, David Nalesnik david.nales...@gmail.comwrote: On Sat, Dec 8, 2012 at 7:21 PM, David Nalesnik david.nales...@gmail.com wrote: [...] Trying to work out the problem, I've done a little rewriting so I'll include the engraver here. You can just substitute this in the problematic file. Well, I did break something. Here's the fix: frameEngraver = #(lambda (context) (let ((span '()) (stub '()) (event-drul (cons '() '( (make-engraver (listeners ((frame-event engraver event) (if (= START (ly:event-property event 'span-direction)) (set-car! event-drul event) (begin (set-cdr! event-drul event) (set-car! event-drul '()) (acknowledgers ((note-column-interface engraver grob source-engraver) (if (ly:spanner? span) (begin (ly:pointer-group-interface::add-grob span 'elements grob) (add-bound-item span grob))) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((script-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((dynamic-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((inline-accidental-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob ((process-music trans) (if (ly:stream-event? (car event-drul)) (begin (set! span (ly:engraver-make-grob trans 'Frame (car event-drul))) (set! stub (ly:engraver-make-grob trans 'FrameStub (car event-drul))) (ly:grob-set-object! stub 'frame span) (ly:grob-set-property! stub 'direction LEFT) (set-car! event-drul '( (if (ly:stream-event? (cdr event-drul)) (if (null? span) (ly:warning No start to this box.) (begin (set! stub (ly:engraver-make-grob trans 'FrameStub (cdr event-drul))) (ly:grob-set-property! stub 'direction RIGHT) (ly:grob-set-object! stub 'frame span) (ly:engraver-announce-end-grob trans span (cdr event-drul)) ((stop-translation-timestep trans) (if (ly:stream-event? (cdr event-drul)) (begin (set! span '()) (set-cdr! event-drul '( (set! stub '()) -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeff, On Sat, Jan 12, 2013 at 11:37 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, I just saw this fix. Thanks for spending so much time tweaking this. Maybe there's a way it can be integrated into the Lilypond code, since you've spent so much time developing it. I'll be using it in a score soon. I've actually been working at this off and on since I sent you that fix, and I've added some functionality. You no longer need to guess at the length of the extender line: you specify its endpoint with the command \frameExtenderEnd. Also, the extender (now a separate grob called FrameExtender) can be broken across lines. There are still some issues to resolve. One of these problems is that the new stencil isn't taken into account in vertical spacing, and this can result in overlaps in extreme cases. (Try moving some of the groups into regions with many ledger lines.) I'm guessing that the difficulty arises because the frame isn't an outside-staff object, but I'm unsure how to proceed. There's some test code in the attached file. Mike Solomon suggested that I handle alignment between the component parts (the frame, the extender, and ultimately a bracket-with-timing affair to encompass the frame and extender) with an alignment grob (as DynamicLineSpanner and the like). This is one angle I'm exploring. (At the moment, uncommenting the \consists line will just draw boxes around the whole affair.) Anyway, I hope this proves helpful. Please let me know if you have any suggestions, or run into difficulties. frameEngraver8.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mon, Dec 10, 2012 at 11:30 PM, David Kastrup d...@gnu.org wrote: The behavior is undefined if I remember correctly: an error is not guaranteed by the standard. I think Guilev2 will produce an error, but LilyPond is still at Guilev1. OK, thanks! -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Sat, Dec 8, 2012 at 7:21 PM, David Nalesnik david.nales...@gmail.com wrote: [...] Trying to work out the problem, I've done a little rewriting so I'll include the engraver here. You can just substitute this in the problematic file. Well, I did break something. Here's the fix: frameEngraver = #(lambda (context) (let ((span '()) (stub '()) (event-drul (cons '() '( (make-engraver (listeners ((frame-event engraver event) (if (= START (ly:event-property event 'span-direction)) (set-car! event-drul event) (begin (set-cdr! event-drul event) (set-car! event-drul '()) (acknowledgers ((note-column-interface engraver grob source-engraver) (if (ly:spanner? span) (begin (ly:pointer-group-interface::add-grob span 'elements grob) (add-bound-item span grob))) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((script-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((dynamic-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((inline-accidental-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob ((process-music trans) (if (ly:stream-event? (car event-drul)) (begin (set! span (ly:engraver-make-grob trans 'Frame (car event-drul))) (set! stub (ly:engraver-make-grob trans 'FrameStub (car event-drul))) (ly:grob-set-object! stub 'frame span) (ly:grob-set-property! stub 'direction LEFT) (set-car! event-drul '( (if (ly:stream-event? (cdr event-drul)) (if (null? span) (ly:warning No start to this box.) (begin (set! stub (ly:engraver-make-grob trans 'FrameStub (cdr event-drul))) (ly:grob-set-property! stub 'direction RIGHT) (ly:grob-set-object! stub 'frame span) (ly:engraver-announce-end-grob trans span (cdr event-drul)) ((stop-translation-timestep trans) (if (ly:stream-event? (cdr event-drul)) (begin (set! span '()) (set-cdr! event-drul '( (set! stub '()) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David, On Sun, Dec 9, 2012 at 12:34 AM, David Kastrup d...@gnu.org wrote: David Nalesnik david.nales...@gmail.com writes: It turns out that the my definition of event-drul as '(() . ()) was the problem. I substituted (cons '() '()) and everything works just fine...even with the file that gave you the issues with multiple staves. I don't understand why '(() . ()) and (cons '() '()) aren't equivalent. The problem is rather that '(() . ()) is equivalent, like eq?, with itself. It is a constant, meaning that on a second run, the _same_ cons cell is being used as in the first run, even if you changed its car and cdr in the mean time. (cons '() '()) allocates a new cons cell for every run. '() itself is not a pair and so it is immutable and not susceptible to this problem. Thank you for this explanation. I've searched around for more information about Scheme constants, and learned that an error message ought to be returned when applying set-car! and the like to a constant. However, using the guile sandbox I'm able to do this: guile (define my-constant-pair '(73 . 88)) guile (set-car! my-constant-pair 3) guile my-constant-pair (3 . 88) (I'm trying an example given here: http://jayreynoldsfreeman.com/Aux/Tutorials/Modifying%20Lists.html) I don't understand this--because clearly using set-car! and set-cdr! with a constant led to problems within the engraver; why will the sandbox allow me to do this? -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David Nalesnik david.nales...@gmail.com writes: (I'm trying an example given here: http://jayreynoldsfreeman.com/Aux/Tutorials/Modifying%20Lists.html) I don't understand this--because clearly using set-car! and set-cdr! with a constant led to problems within the engraver; why will the sandbox allow me to do this? The behavior is undefined if I remember correctly: an error is not guaranteed by the standard. I think Guilev2 will produce an error, but LilyPond is still at Guilev1. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, I'm copying this to the list since I myself am not sure about something here. On Sat, Dec 8, 2012 at 5:13 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, Thanks for revising this more for me. I really appreciate your efforts, and I will take a look at this asap and write back. For my learning, could you please explain what exactly you changed between versions 4 and 5 that got it working in parallel? Well, I must say that I was a bit mystified by this, and I don't understand why the original form wouldn't work on multiple staves. I spent a good deal of time trying to figure out the sequence of the various methods within the engraver--i.e., when is process-music called in relation to listeners and acknowledgers. The order these methods appear is not necessarily the order in which they are called in a timestep, and a method may be called more than once within a single timestep--process-music, for example. You have to understand the sequence to know what information you have to work with at any given time. (For example, process-music will be called in a timestep before any grobs are acknowledged and afterwards as well. Trying to work with grobs that aren't there yet necessitates some sort of check, so you don't get errors.) I don't see any problem with the engraver here. I did notice something which I can't account for. You'll notice that `frameEngraver4.ly' uses a variable event-drul. When a frame-event is heard (created by \frameStart/\frameEnd), that event is stored in this variable. I then use the contents of this variable to determine what to do: start a frame, end a frame, create a stub (for spacing) at the beginning, create a stub at the end. This doesn't work here, and I don't know why. The version of the engraver I last sent you substitutes a system of setting variables called stop? and go? to control the steps. It works. BUT... when you substitute the earlier method, it doesn't work. I've attached this simple substitution so you can see what I mean. (The ignoring weird minimum distance stems from the fact that a FrameStub has nothing in its 'elements array--it should contain the last grobs within the frame--this info is used for assessing its dimensions). [If anyone reading this knows how to get the event-storing method how to work, please let me know. This seems to be a better technique.] I hope this is useful... -David frameEngraver_why_wont_this_work.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi again, On Sat, Dec 8, 2012 at 7:21 AM, David Nalesnik david.nales...@gmail.com wrote: Hi Jeffrey, I'm copying this to the list since I myself am not sure about something here. On Sat, Dec 8, 2012 at 5:13 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, Thanks for revising this more for me. I really appreciate your efforts, and I will take a look at this asap and write back. For my learning, could you please explain what exactly you changed between versions 4 and 5 that got it working in parallel? Well, I must say that I was a bit mystified by this, and I don't understand why the original form wouldn't work on multiple staves. [snip] I did notice something which I can't account for. You'll notice that `frameEngraver4.ly' uses a variable event-drul. It turns out that the my definition of event-drul as '(() . ()) was the problem. I substituted (cons '() '()) and everything works just fine...even with the file that gave you the issues with multiple staves. I don't understand why '(() . ()) and (cons '() '()) aren't equivalent. Trying to work out the problem, I've done a little rewriting so I'll include the engraver here. You can just substitute this in the problematic file. frameEngraver = #(lambda (context) (let ((span '()) (stub '()) (event-drul (cons '() '( (make-engraver (listeners ((frame-event engraver event) (if (= START (ly:event-property event 'span-direction)) (set-car! event-drul event) (begin (set-cdr! event-drul event) (set-car! event-drul '()) (acknowledgers ((note-column-interface engraver grob source-engraver) (if (ly:spanner? span) (begin (ly:pointer-group-interface::add-grob span 'elements grob) (add-bound-item span grob))) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((script-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((dynamic-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob))) ((inline-accidental-interface engraver grob source-engraver) (if (ly:spanner? span) (ly:pointer-group-interface::add-grob span 'elements grob)) (if (ly:item? stub) (ly:pointer-group-interface::add-grob stub 'elements grob ((process-music trans) (if (ly:stream-event? (car event-drul)) (begin (set! span (ly:engraver-make-grob trans 'Frame (car event-drul))) (set! stub (ly:engraver-make-grob trans 'FrameStub (car event-drul))) (ly:grob-set-object! stub 'frame span) (ly:grob-set-property! stub 'direction LEFT) (set-car! event-drul '( (if (ly:stream-event? (cdr event-drul)) (if (null? span) (ly:warning No start to this box.) (begin (set! stub (ly:engraver-make-grob trans 'FrameStub (cdr event-drul))) (ly:grob-set-property! stub 'direction RIGHT) (ly:grob-set-object! stub 'frame span) (ly:engraver-announce-end-grob trans span (cdr event-drul)) (set-cdr! event-drul '()) ((stop-translation-timestep trans) (set! stub '()) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, On Thu, Dec 6, 2012 at 3:44 PM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi all, Could someone please take a look at the latest scheme code in this thread and figure out how we can use this frame engraver construct on multiple staffs in the same score simultaneously? It's pretty important for preceding in my work, and I can't figure out how to get it working. Sorry to leave you hanging--I haven't had much time to devote to LilyPond recently. I've got the engraver working so you can have independent frames on separate staves. I haven't been able to test it very much, so do let me know if it looks like I've broken something. There's several issues that I do know about, however. The first is that the extender lines will push barlines out of the way. I suppose you could set the 'X-extent of any BarLine you want to cross to '(+inf.0 . -inf.0) as I did in the example in `frameEngraver4.ly'. Here I removed the BarLine engraver. I suppose you could work with very large bars if you want barlines in some places, Let me know if you find a technique that works here. The second issue is that you have to experiment with the extender lengths to get the right values. Anyway, HTH! -David frameEngraver5.ly Description: Binary data attachment: frameEngraver5.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi all, Could someone please take a look at the latest scheme code in this thread and figure out how we can use this frame engraver construct on multiple staffs in the same score simultaneously? It's pretty important for preceding in my work, and I can't figure out how to get it working. thank you, Jeff On Sun, Nov 25, 2012 at 5:19 PM, David Nalesnik david.nales...@gmail.comwrote: Hi Jeffrey, On Sat, Nov 24, 2012 at 11:47 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, Yes, I think it's reasonable to confine the frame to a single line, even though the arrow must be breakable. I'm also having problems using the construct on parallel staffs within a score. It works fine for a single staff, but when I try to use the same construct on two staffs simultaneously, I get, warning: No start to this box. Preprocessing graphical objects...frameEngraver4.ly:124:23: In procedure ly:grob-property in expression (ly:grob-property frame (quote padding)):frameEngraver4.ly:124:23: Wrong type argument in position 1 (expecting Grob): () I don't know how the Scheme is working here, so maybe you can try out two of these in parallel and let me know if it's working for you. Nope, I get the same error... Argh! I'm not sure why this is happening. As soon as I get some time, I'll need to go over the engraver with a fine-toothed comb. I know how to approach the issue of the broken extender line, but I want to make sure I'm working from a sound base first. -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, On Sat, Nov 24, 2012 at 11:47 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, Yes, I think it's reasonable to confine the frame to a single line, even though the arrow must be breakable. I'm also having problems using the construct on parallel staffs within a score. It works fine for a single staff, but when I try to use the same construct on two staffs simultaneously, I get, warning: No start to this box. Preprocessing graphical objects...frameEngraver4.ly:124:23: In procedure ly:grob-property in expression (ly:grob-property frame (quote padding)):frameEngraver4.ly:124:23: Wrong type argument in position 1 (expecting Grob): () I don't know how the Scheme is working here, so maybe you can try out two of these in parallel and let me know if it's working for you. Nope, I get the same error... Argh! I'm not sure why this is happening. As soon as I get some time, I'll need to go over the engraver with a fine-toothed comb. I know how to approach the issue of the broken extender line, but I want to make sure I'm working from a sound base first. -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi there, The box construct from this thread is working fine on my machine, but I'd like to know how to add one important feature to it: It's currently the case that the arrow isn't breakable, i. e. if the box's entire duration exceeds the graphic space of the first line, the arrow stops on the first line and you end up with a bunch of blank space on the second line. How can the arrow break and continue on the second line? I know that many spanners have a breakable attribute -- maybe there's a straightforward way to add this ability to the box's arrow? best, Jeff On Thu, Nov 15, 2012 at 2:10 PM, David Nalesnik david.nales...@gmail.comwrote: Hi Jeffrey, On Wed, Nov 14, 2012 at 1:05 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, This is a very help description. Maybe you could describe for me: I see both the box duration as a spacer duration and the line duration as extender length, in what seem to be unitless units. The way it's set up now, the extender length is measured in staff-spaces. Here is an addition -- although I'm not sure if it's an improvement -- that might be important in some cases: It seems that it would be helpful to describe the line length of the arrow in terms of spacers if possible, to more easily describe the duration occupied by the entire frame construct. Yes, that's a good idea. I don't like having to fiddle with numbers to get it to look right. Likewise, I would like to be able to draw a bracket over the frame's graphic duration, with a note duration or series of tied durations above the bracket, centered, to indicate the duration of the frame clearly. I don't know how this would work; maybe it would be possible to use a bracket spanner and then enter durations? This would be doable, but I think markup would be the way to go here. That way, you can specify the duration in clock time (which I've done when I've used this sort of notation). One concern I have here stems from the fact that frame notation isn't standardized, and there are many variants: there's no way everybody's favorite notation could be accommodated. As one example, putting a box around the notes isn't the only way it's done: I have in front of me a piece by Bruce Saylor which puts an ellipse around the notes. So I think the only workable approach is to offer some bare-bones implementation. For more idiosyncratic notations, I guess the answer is to turn to Inkscape and the like. (In any case, I'd like to get something basic working first before adding frills.) -David -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, On Sat, Nov 24, 2012 at 9:58 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi there, The box construct from this thread is working fine on my machine, but I'd like to know how to add one important feature to it: It's currently the case that the arrow isn't breakable, i. e. if the box's entire duration exceeds the graphic space of the first line, the arrow stops on the first line and you end up with a bunch of blank space on the second line. How can the arrow break and continue on the second line? I know that many spanners have a breakable attribute -- maybe there's a straightforward way to add this ability to the box's arrow? Yes, this is something which could be added. It's a problem I've been aware of and wanted to fix. (The issue at the moment is having the time to do it now that the end of the semester is here! The extender line certainly should have this capability, but I'm in doubt about the frame itself. Would it make sense to insist that the frame be confined to a single line? -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, Yes, I think it's reasonable to confine the frame to a single line, even though the arrow must be breakable. I'm also having problems using the construct on parallel staffs within a score. It works fine for a single staff, but when I try to use the same construct on two staffs simultaneously, I get, warning: No start to this box. Preprocessing graphical objects...frameEngraver4.ly:124:23: In procedure ly:grob-property in expression (ly:grob-property frame (quote padding)):frameEngraver4.ly:124:23: Wrong type argument in position 1 (expecting Grob): () I don't know how the Scheme is working here, so maybe you can try out two of these in parallel and let me know if it's working for you. best, Jeff On Sat, Nov 24, 2012 at 8:10 AM, David Nalesnik david.nales...@gmail.comwrote: Hi Jeffrey, On Sat, Nov 24, 2012 at 9:58 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi there, The box construct from this thread is working fine on my machine, but I'd like to know how to add one important feature to it: It's currently the case that the arrow isn't breakable, i. e. if the box's entire duration exceeds the graphic space of the first line, the arrow stops on the first line and you end up with a bunch of blank space on the second line. How can the arrow break and continue on the second line? I know that many spanners have a breakable attribute -- maybe there's a straightforward way to add this ability to the box's arrow? Yes, this is something which could be added. It's a problem I've been aware of and wanted to fix. (The issue at the moment is having the time to do it now that the end of the semester is here! The extender line certainly should have this capability, but I'm in doubt about the frame itself. Would it make sense to insist that the frame be confined to a single line? -David -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, On Wed, Nov 14, 2012 at 1:05 AM, Jeffrey Trevino jeffrey.trevi...@gmail.com wrote: Hi David, This is a very help description. Maybe you could describe for me: I see both the box duration as a spacer duration and the line duration as extender length, in what seem to be unitless units. The way it's set up now, the extender length is measured in staff-spaces. Here is an addition -- although I'm not sure if it's an improvement -- that might be important in some cases: It seems that it would be helpful to describe the line length of the arrow in terms of spacers if possible, to more easily describe the duration occupied by the entire frame construct. Yes, that's a good idea. I don't like having to fiddle with numbers to get it to look right. Likewise, I would like to be able to draw a bracket over the frame's graphic duration, with a note duration or series of tied durations above the bracket, centered, to indicate the duration of the frame clearly. I don't know how this would work; maybe it would be possible to use a bracket spanner and then enter durations? This would be doable, but I think markup would be the way to go here. That way, you can specify the duration in clock time (which I've done when I've used this sort of notation). One concern I have here stems from the fact that frame notation isn't standardized, and there are many variants: there's no way everybody's favorite notation could be accommodated. As one example, putting a box around the notes isn't the only way it's done: I have in front of me a piece by Bruce Saylor which puts an ellipse around the notes. So I think the only workable approach is to offer some bare-bones implementation. For more idiosyncratic notations, I guess the answer is to turn to Inkscape and the like. (In any case, I'd like to get something basic working first before adding frills.) -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David: That was exactly what I was hoping for - absolutely! Thank you so much, it totally makes sense now. More and more I keep seeing just how powerful LilyPond can be - it's scary sometimes! (but always in a good way lol) Thanks again, Ben David Nalesnik-2 wrote Hi Ben, On Tue, Nov 13, 2012 at 8:46 PM, SoundsFromSound lt; soundsfromsound@ gt; wrote: I'm trying to wrap my head around the frameEngraver4 and can't quite grasp the syntax and how to customize the code to suit my needs. Is there a guide or cheat-sheet that explains how to use frameEngraver to it's fullest potential? I feel like it's a bit over my head and I feel lost when trying to make sense of it. Thanks for any feedback. Well, there's no guide or cheat-sheet, but I can give you a brief run through--which amounts to what you see in the example at the bottom. Basically, you include the engraver as I do in the \layout block.. Then, you surround the notes in your frame with \frameStart and \frameEnd. You control the length of the line-with-arrow by overriding the property 'extender-length. This line unfortunately won't cross a bar line unless you override the barline's X-extent to '(+inf.0 . -inf.0) -- i.e., so it has no X-extent at all. (This is one of the issues I'll have to look into.) There's not much customization that's possible at the moment. It would be relatively easy to add a property to control the height of the extender-line relative to the box (right now it's always centered), and I'll see about doing that. I'll need to add a provision for controlling the width of the box. The implementation here is pretty rudimentary--just designed to get something working. As I say, I'll need to look at some scores to see the kinds of customizations which are desirable. If you have any ideas, please let me know. Most of what's in this file (anything above the example) might be tucked away into a file which you include to cut down on the mess. Hope this is helpful-- David ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136369.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Whoa -- It's marvelous to see such a detailed response to my question. Most importantly, frameEngraver4 works! I will study the differences between 3 and 4 to see what changed. As mentioned, it seems to me that the best course of action would be to make dynamic spanner creation a high development priority and an expected user interaction: Custom notational constructs like these have been around for half a century or so, and it would be especially welcoming to contemporary composers if the system were to facilitate them with some kind of interface. If this can't happen, I'm grateful to have threads like these to perpetually modify my contemporary music spanners at each new release. thank you for your attention, Jeff On Mon, Nov 12, 2012 at 11:33 PM, David Kastrup d...@gnu.org wrote: Janek Warchoł janek.lilyp...@gmail.com writes: - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David was a developer - no? Yes, he is. Our most active one at the moment. You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. It depends. You can add $10/month to the general David fund, just to enable David working on LilyPond in general (that's continouous financial support). Or you can negotiate a specific contract with him - or someone else - where you'd give that person a significantly bigger amount of money once and he'd implement something specific (that's hiring a programmer to implement a feature). There is also David Nalesnik who has been the one doing the previous implementation IIRC. The situation with me is that LilyPond users and developers are keeping me financially afloat with the understanding that I spend my available time on improving LilyPond according to what I consider best at the moment. Since I am excellent at programming and awful at self-discipline, this arrangement tends to deliver quite better value for the money than actually hiring me for more specific tasks. And if I got stuck on more specific tasks, that would be to the detriment of the people who are already contributing to my costs of living. So we are in the somewhat absurd situation that people tend to recommend my services in order to improve my finances, but that I actually don't feel like I can in good conscience offer to do non-trivial side jobs that can cause me to deadlock for longer times. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
I'm trying to wrap my head around the frameEngraver4 and can't quite grasp the syntax and how to customize the code to suit my needs. Is there a guide or cheat-sheet that explains how to use frameEngraver to it's fullest potential? I feel like it's a bit over my head and I feel lost when trying to make sense of it. Thanks for any feedback. Ben Whoa -- It's marvelous to see such a detailed response to my question. Most importantly, frameEngraver4 works! I will study the differences between 3 and 4 to see what changed. As mentioned, it seems to me that the best course of action would be to make dynamic spanner creation a high development priority and an expected user interaction: Custom notational constructs like these have been around for half a century or so, and it would be especially welcoming to contemporary composers if the system were to facilitate them with some kind of interface. If this can't happen, I'm grateful to have threads like these to perpetually modify my contemporary music spanners at each new release. thank you for your attention, Jeff On Mon, Nov 12, 2012 at 11:33 PM, David Kastrup lt;dak@gt; wrote: Janek Warchoł lt;janek.lilypond@gt; writes: - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David was a developer - no? Yes, he is. Our most active one at the moment. You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. It depends. You can add $10/month to the general David fund, just to enable David working on LilyPond in general (that's continouous financial support). Or you can negotiate a specific contract with him - or someone else - where you'd give that person a significantly bigger amount of money once and he'd implement something specific (that's hiring a programmer to implement a feature). There is also David Nalesnik who has been the one doing the previous implementation IIRC. The situation with me is that LilyPond users and developers are keeping me financially afloat with the understanding that I spend my available time on improving LilyPond according to what I consider best at the moment. Since I am excellent at programming and awful at self-discipline, this arrangement tends to deliver quite better value for the money than actually hiring me for more specific tasks. And if I got stuck on more specific tasks, that would be to the detriment of the people who are already contributing to my costs of living. So we are in the somewhat absurd situation that people tend to recommend my services in order to improve my finances, but that I actually don't feel like I can in good conscience offer to do non-trivial side jobs that can cause me to deadlock for longer times. -- David Kastrup ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136361.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Ben, On Tue, Nov 13, 2012 at 8:46 PM, SoundsFromSound soundsfromso...@gmail.com wrote: I'm trying to wrap my head around the frameEngraver4 and can't quite grasp the syntax and how to customize the code to suit my needs. Is there a guide or cheat-sheet that explains how to use frameEngraver to it's fullest potential? I feel like it's a bit over my head and I feel lost when trying to make sense of it. Thanks for any feedback. Well, there's no guide or cheat-sheet, but I can give you a brief run through--which amounts to what you see in the example at the bottom. Basically, you include the engraver as I do in the \layout block.. Then, you surround the notes in your frame with \frameStart and \frameEnd. You control the length of the line-with-arrow by overriding the property 'extender-length. This line unfortunately won't cross a bar line unless you override the barline's X-extent to '(+inf.0 . -inf.0) -- i.e., so it has no X-extent at all. (This is one of the issues I'll have to look into.) There's not much customization that's possible at the moment. It would be relatively easy to add a property to control the height of the extender-line relative to the box (right now it's always centered), and I'll see about doing that. I'll need to add a provision for controlling the width of the box. The implementation here is pretty rudimentary--just designed to get something working. As I say, I'll need to look at some scores to see the kinds of customizations which are desirable. If you have any ideas, please let me know. Most of what's in this file (anything above the example) might be tucked away into a file which you include to cut down on the mess. Hope this is helpful-- David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, This is a very help description. Maybe you could describe for me: I see both the box duration as a spacer duration and the line duration as extender length, in what seem to be unitless units. Here is an addition -- although I'm not sure if it's an improvement -- that might be important in some cases: It seems that it would be helpful to describe the line length of the arrow in terms of spacers if possible, to more easily describe the duration occupied by the entire frame construct. Likewise, I would like to be able to draw a bracket over the frame's graphic duration, with a note duration or series of tied durations above the bracket, centered, to indicate the duration of the frame clearly. I don't know how this would work; maybe it would be possible to use a bracket spanner and then enter durations? thank you for your help, Jeff On Wed, Nov 14, 2012 at 4:58 AM, David Nalesnik david.nales...@gmail.comwrote: Hi Ben, On Tue, Nov 13, 2012 at 8:46 PM, SoundsFromSound soundsfromso...@gmail.com wrote: I'm trying to wrap my head around the frameEngraver4 and can't quite grasp the syntax and how to customize the code to suit my needs. Is there a guide or cheat-sheet that explains how to use frameEngraver to it's fullest potential? I feel like it's a bit over my head and I feel lost when trying to make sense of it. Thanks for any feedback. Well, there's no guide or cheat-sheet, but I can give you a brief run through--which amounts to what you see in the example at the bottom. Basically, you include the engraver as I do in the \layout block.. Then, you surround the notes in your frame with \frameStart and \frameEnd. You control the length of the line-with-arrow by overriding the property 'extender-length. This line unfortunately won't cross a bar line unless you override the barline's X-extent to '(+inf.0 . -inf.0) -- i.e., so it has no X-extent at all. (This is one of the issues I'll have to look into.) There's not much customization that's possible at the moment. It would be relatively easy to add a property to control the height of the extender-line relative to the box (right now it's always centered), and I'll see about doing that. I'll need to add a provision for controlling the width of the box. The implementation here is pretty rudimentary--just designed to get something working. As I say, I'll need to look at some scores to see the kinds of customizations which are desirable. If you have any ideas, please let me know. Most of what's in this file (anything above the example) might be tucked away into a file which you include to cut down on the mess. Hope this is helpful-- David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mon, Nov 12, 2012 at 1:25 AM, SoundsFromSound soundsfromso...@gmail.com wrote: I'll keep you posted for sure. Say, do you suppose that this boxed notation utility could be implemented sooner (and perhaps with more powerful features) in LilyPond if funding/support increased? Well, i think the situation is like this: - increasing continouous financial support (e.g. for David) has a positive effect on lily development in general, but i think that the difference wrt/ boxed notation itself wouldn't be noticeable (i.e. don't expect that if you give more money to David Kastrup he'll go and implement this soon), - contributing to Lily yourself (i.e. writing code, or documentation, or helping with organizing things - you don't have to be a programmer to help) also has a positive effect on lily development in general, but the difference wrt/ implementing boxed notation won't be noticeable unless you start working on boxed notation itself, - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. cheers, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
(see below) Janek Warchoł-2 wrote On Mon, Nov 12, 2012 at 1:25 AM, SoundsFromSound lt; soundsfromsound@ gt; wrote: I'll keep you posted for sure. Say, do you suppose that this boxed notation utility could be implemented sooner (and perhaps with more powerful features) in LilyPond if funding/support increased? Well, i think the situation is like this: - increasing continouous financial support (e.g. for David) has a positive effect on lily development in general, but i think that the difference wrt/ boxed notation itself wouldn't be noticeable (i.e. don't expect that if you give more money to David Kastrup he'll go and implement this soon), I see. - contributing to Lily yourself (i.e. writing code, or documentation, or helping with organizing things - you don't have to be a programmer to help) also has a positive effect on lily development in general, but the difference wrt/ implementing boxed notation won't be noticeable unless you start working on boxed notation itself, I wish I could contribute more to the notation programming itself but I'm not a strong programmer (unless you count OOP like MaxMSP, etc) - so that really isn't an option for me. - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David / was / a developer - no? You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. How would one go about getting an estimate with regards to requests like this one? Thank you for clarifying this for me, because up until this point, I thought the boxed notation situation was in its current state because it simply was not possible (from a coding standpoint or something) - not a matter of time/funding/desire for modern notation possibilities. Thanks! Ben cheers, Janek ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136304.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi, you seem to use some very strange quotation style. Please use regular quotation style (i.e. your text without marks, each quotation level has one more). On Mon, Nov 12, 2012 at 8:44 PM, SoundsFromSound soundsfromso...@gmail.com wrote: Janek Warchoł-2 wrote - contributing to Lily yourself (i.e. writing code, or documentation, or helping with organizing things - you don't have to be a programmer to help) also has a positive effect on lily development in general, but the difference wrt/ implementing boxed notation won't be noticeable unless you start working on boxed notation itself, I wish I could contribute more to the notation programming itself but I'm not a strong programmer (unless you count OOP like MaxMSP, etc) - so that really isn't an option for me. as i've said, there are tasks not involving programming. And they do make a difference. - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David was a developer - no? Yes, he is. Our most active one at the moment. You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. It depends. You can add $10/month to the general David fund, just to enable David working on LilyPond in general (that's continouous financial support). Or you can negotiate a specific contract with him - or someone else - where you'd give that person a significantly bigger amount of money once and he'd implement something specific (that's hiring a programmer to implement a feature). How would one go about getting an estimate with regards to requests like this one? No idea. I don't know how much work this feature would require. A wild guess would be something between 5 and 50 hours for an experienced programmer. Considering appropriate programmer salaries, that means anywhere between $200 and $3000. But my estimate could just as well be totally wrong right from the start. Thank you for clarifying this for me, because up until this point, I thought the boxed notation situation was in its current state because it simply was not possible (from a coding standpoint or something) - not a matter of time/funding/desire for modern notation possibilities. Well, almost everything is possible when you have enough money. If someone would give us a million dollars, we would hire a dozen experienced programmers for a year and after that time LilyPond would become a completely different project, possibly overcoming many present problems (and inventing new ones ;P). Do you have a millionaire friend, perchance? best, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi, you seem to use some very strange quotation style. Please use regular quotation style (i.e. your text without marks, each quotation level has one more). Sorry, the device I was on must have auto-corrected-added an additional character. () Weird. -Ben - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136312.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mon, Nov 12, 2012 at 2:20 PM, Janek Warchoł janek.lilyp...@gmail.com wrote: Hi, you seem to use some very strange quotation style. Please use regular quotation style (i.e. your text without marks, each quotation level has one more). On Mon, Nov 12, 2012 at 8:44 PM, SoundsFromSound soundsfromso...@gmail.com wrote: Janek Warchoł-2 wrote - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David was a developer - no? Yes, he is. Our most active one at the moment. You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. It depends. You can add $10/month to the general David fund, just to enable David working on LilyPond in general (that's continouous financial support). Or you can negotiate a specific contract with him - or someone else - where you'd give that person a significantly bigger amount of money once and he'd implement something specific (that's hiring a programmer to implement a feature). I think that there's some confusion between the Davids here... Janek is speaking of David Kastrup. The author of the file under discussion is me, David Nalesnik, with generous contributions from Mike Solomon. Thank you for clarifying this for me, because up until this point, I thought the boxed notation situation was in its current state because it simply was not possible (from a coding standpoint or something) - not a matter of time/funding/desire for modern notation possibilities. It should be possible to get frame notation into LilyPond. In fact, I could quickly convert the file into a patch. However, I'd like to get it right. There is much testing/improving/study of examples in published scores to be done. (Provision has to be made for a frame extending across a line break, for one thing.) You could of course hire somebody to get this expedited, but I'm happy to work on this further, bounty or no. Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Janek Warchoł janek.lilyp...@gmail.com writes: - you can pay one of the experienced developers to implement specifically this feature. But that would probably be expensive, as programming work is expensive in general. You'll probably need to find several other people willing to pay for this. I'm confused, I thought David was a developer - no? Yes, he is. Our most active one at the moment. You said paying him would not be a likely path to seeing this boxed notation implemented further, but rather just to help LilyPond in general, progress as software. It depends. You can add $10/month to the general David fund, just to enable David working on LilyPond in general (that's continouous financial support). Or you can negotiate a specific contract with him - or someone else - where you'd give that person a significantly bigger amount of money once and he'd implement something specific (that's hiring a programmer to implement a feature). There is also David Nalesnik who has been the one doing the previous implementation IIRC. The situation with me is that LilyPond users and developers are keeping me financially afloat with the understanding that I spend my available time on improving LilyPond according to what I consider best at the moment. Since I am excellent at programming and awful at self-discipline, this arrangement tends to deliver quite better value for the money than actually hiring me for more specific tasks. And if I got stuck on more specific tasks, that would be to the detriment of the people who are already contributing to my costs of living. So we are in the somewhat absurd situation that people tend to recommend my services in order to improve my finances, but that I actually don't feel like I can in good conscience offer to do non-trivial side jobs that can cause me to deadlock for longer times. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Ben, On Sat, Nov 10, 2012 at 9:53 PM, SoundsFromSound soundsfromso...@gmail.com wrote: David: I see, thanks for clarifying that for me. So, in your opinion, if I wanted to use these aleatoric boxes on a few scores here and there, that would be doable - though not ideal, it would /work/- correct? I wouldn't ever need this type of notation on anything of a larger scale. I think that if you're using it on single files (and not, say, with lilypond-book), there shouldn't be a problem. At least I haven't noticed anything untoward. But understand that the way the new grob is built up with its new properties and event-class and such is not done in a sound way. There is currently no proper user interface for doing this sort of thing in an .ly file. When there is one, parts of this file will need to be rewritten (as happened in the situation that brought you to the list, which came about because of a step in the direction of this new-grob-with-all-the-fixings interface made by David Kastrup). I ask because in future scores I'll have to do something similar to this and want to make sure I don't corrupt my dear LilyPond install :) No, the files are safe! -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David, Thanks for the feedback! It's sad to hear that boxed notation is a bit challenging in LilyPond (i.e. not possible without breaking parts of it) - do you think there will ever be a native, more acceptable way to do boxed notation in the future? I'm not much a programmer so I apologize if that is a silly question, but it'd be awesome if it could be implemented. I'm not sure if you mean it's not possible yet, or not possible from a programming standpoint. Thanks, Ben David Nalesnik-2 wrote Ben, On Sat, Nov 10, 2012 at 9:53 PM, SoundsFromSound lt; soundsfromsound@ gt; wrote: David: I see, thanks for clarifying that for me. So, in your opinion, if I wanted to use these aleatoric boxes on a few scores here and there, that would be doable - though not ideal, it would /work/- correct? I wouldn't ever need this type of notation on anything of a larger scale. I think that if you're using it on single files (and not, say, with lilypond-book), there shouldn't be a problem. At least I haven't noticed anything untoward. But understand that the way the new grob is built up with its new properties and event-class and such is not done in a sound way. * There is currently no proper user interface for doing this sort of thing in an .ly file. * When there is one, parts of this file will need to be rewritten (as happened in the situation that brought you to the list, which came about because of a step in the direction of this new-grob-with-all-the-fixings interface made by David Kastrup). I ask because in future scores I'll have to do something similar to this and want to make sure I don't corrupt my dear LilyPond install :) No, the files are safe! -David ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136229.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Ben, On Sun, Nov 11, 2012 at 4:27 PM, SoundsFromSound soundsfromso...@gmail.com wrote: David, Thanks for the feedback! It's sad to hear that boxed notation is a bit challenging in LilyPond (i.e. not possible without breaking parts of it) - do you think there will ever be a native, more acceptable way to do boxed notation in the future? I'm not much a programmer so I apologize if that is a silly question, but it'd be awesome if it could be implemented. I'm not sure if you mean it's not possible yet, or not possible from a programming standpoint. At some point in time, I do hope that there is an interface which will allow users to define fully functioning grobs within .ly files. I think that will be a giant step forward for the program, as it will lead to all sorts of new capabilities. I can't speak to the details of how this will be done as this is beyond my skill level. The current way to create new grobs is to make the necessary additions to the various files in the code base. (This is what was done recently to create the MeasureCounter grob.) It should be possible to add frame notation this way, but I think it will be a long road! (If you do use this engraver, please let me know if you run into problems or wish it could do something it can't; I'll be happy to try to improve it, and possibly do this the right way if it's promising...) Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David: I'll keep you posted for sure. Say, do you suppose that this boxed notation utility could be implemented sooner (and perhaps with more powerful features) in LilyPond if funding/support increased? If so, this is one feature where I'd absolutely give all that I could to make possible. :) $ Ben David Nalesnik-2 wrote Ben, On Sun, Nov 11, 2012 at 4:27 PM, SoundsFromSound lt; soundsfromsound@ gt; wrote: David, Thanks for the feedback! It's sad to hear that boxed notation is a bit challenging in LilyPond (i.e. not possible without breaking parts of it) - do you think there will ever be a native, more acceptable way to do boxed notation in the future? I'm not much a programmer so I apologize if that is a silly question, but it'd be awesome if it could be implemented. I'm not sure if you mean it's not possible yet, or not possible from a programming standpoint. At some point in time, I do hope that there is an interface which will allow users to define fully functioning grobs within .ly files. I think that will be a giant step forward for the program, as it will lead to all sorts of new capabilities. I can't speak to the details of how this will be done as this is beyond my skill level. The current way to create new grobs is to make the necessary additions to the various files in the code base. (This is what was done recently to create the MeasureCounter grob.) It should be possible to add frame notation this way, but I think it will be a long road! (If you do use this engraver, please let me know if you run into problems or wish it could do something it can't; I'll be happy to try to improve it, and possibly do this the right way if it's promising...) Best, David ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136248.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Jeffrey, On Sat, Nov 10, 2012 at 12:42 AM, David Kastrup d...@gnu.org wrote: Jeffrey Trevino jeffrey.trevi...@gmail.com writes: Hi all, I'm trying to get the frameEngraver3.ly code from this aleatoric notation thread going on Lilypond 2.16.0-1, and I get the following errors: GNU LilyPond 2.16.0 Processing `frameEngraver.ly' Parsing... frameEngraver.ly:27:1: error: GUILE signaled an error for the expression beginning here # (define-event-class 'frame-event Unbound variable: define-event-class The code contains %% based on regression test `scheme-text-spanner.ly' %% Thanks, Mike That regression test tampered with internals of LilyPond in a manner that broke session integrity (any changes propagated to further files processed on the command line). It likely still does. The internals changed in the mean time. It was probably a mistake to ever include this regtest. It just gives people bad ideas. -- David Kastrup It is possible to get this working with 2.16 on up. You just need to rewrite a few things after the changes done to the regression test on which the file is based. I'm attaching a revision of the file which won't raise the errors you saw, but it is not a solution to the problems that David Kastrup mentions. Best, David N. frameEngraver4.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Sat, Nov 10, 2012 at 12:42 AM, David Kastrup d...@gnu.org wrote: That regression test tampered with internals of LilyPond in a manner that broke session integrity (any changes propagated to further files processed on the command line). It likely still does. The internals changed in the mean time. As a demonstration of the bleed-over between files processed on the command line, the following file (let's say named `frameEngraver4test.ly') will process without error if run with 'frameEngraver4.ly' on the command line: lilypond frameEngraver4 frameEngraver4test.ly The file: \version 2.17.6 frameStart = #(make-span-event 'FrameEvent START) frameEnd = #(make-span-event 'FrameEvent STOP) \relative c'' { \override Stem #'transparent = ##t \override Beam #'transparent = ##t \once \override Frame #'extender-length = #8 \frameStart dis'8[ e f \frameEnd ges] s2 \once \override Frame #'extender-length = #11 \frameStart d,8[ e f \frameEnd g] s2 \once \override Staff.BarLine #'X-extent = #'(+inf.0 . -inf.0) % line can cross bar line s2 \once \override Frame #'extender-length = #3.5 \frameStart fis'8[ bes,, aes, \frameEnd e''] } \layout { \context { \Global \grobdescriptions #my-grob-descriptions #my-event-classes } \context { \Voice \consists \frameEngraver } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
- composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136168.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, I'm a little confused. What problems was David talking about, I didn't follow. So we shouldn't use this boxed notation approach, or we should but with caveats? Thanks, Ben That regression test tampered with internals of LilyPond in a manner that broke session integrity (any changes propagated to further files processed on the command line). It likely still does. The internals changed in the mean time. It was probably a mistake to ever include this regtest. It just gives people bad ideas. -- David Kastrup It is possible to get this working with 2.16 on up. You just need to rewrite a few things after the changes done to the regression test on which the file is based. I'm attaching a revision of the file which won't raise the errors you saw, but it is not a solution to the problems that David Kastrup mentions. Best, David N. ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user frameEngraver4.ly (13K) lt;http://lilypond.1069038.n5.nabble.com/attachment/136166/0/frameEngraver4.lygt; - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136170.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Ben, On Sat, Nov 10, 2012 at 9:00 PM, SoundsFromSound soundsfromso...@gmail.com wrote: Hi David, I'm a little confused. What problems was David talking about, I didn't follow. So we shouldn't use this boxed notation approach, or we should but with caveats? As I understand it, the issue is that the file changes the internals, so there is a bleed-over between files processed together on the command line (as the example I just provided demonstrates). My take is that you could use it with caveats. You could use it only when processing files singly, or in batches (but check if there is anything unexpected in output). -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David: I see, thanks for clarifying that for me. So, in your opinion, if I wanted to use these aleatoric boxes on a few scores here and there, that would be doable - though not ideal, it would /work/- correct? I wouldn't ever need this type of notation on anything of a larger scale. I ask because in future scores I'll have to do something similar to this and want to make sure I don't corrupt my dear LilyPond install :) Thanks, Ben David Nalesnik-2 wrote Hi Ben, On Sat, Nov 10, 2012 at 9:00 PM, SoundsFromSound lt; soundsfromsound@ gt; wrote: Hi David, I'm a little confused. What problems was David talking about, I didn't follow. So we shouldn't use this boxed notation approach, or we should but with caveats? As I understand it, the issue is that the file changes the internals, so there is a bleed-over between files processed together on the command line (as the example I just provided demonstrates). My take is that you could use it with caveats. You could use it only when processing files singly, or in batches (but check if there is anything unexpected in output). -David ___ lilypond-user mailing list lilypond-user@ https://lists.gnu.org/mailman/listinfo/lilypond-user - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136172.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
SoundsFromSound soundsfromso...@gmail.com writes: Hi David, I'm a little confused. What problems was David talking about, I didn't follow. So we shouldn't use this boxed notation approach, or we should but with caveats? One shouldn't a) tamper with internals b) expect the tampering to remain working in future versions Mike took some code that was _not_ made a public interface because it was not able to work according to the expectations of a public interface (namely that using it in one user-level file will not affect other, independent files), copied it and made a public interface from it. Now of course this does not work reliably in a multi-file scenario, and since it does not work reliably, whenever there _will_ be a public interface for that kind of thing, it will _necessarily_ have different interfaces. So the approach was broken, and it was _guaranteed_ to stop working the moment the underlying implementation was changed to something less broken. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi all, I'm trying to get the frameEngraver3.ly code from this aleatoric notation thread going on Lilypond 2.16.0-1, and I get the following errors: GNU LilyPond 2.16.0 Processing `frameEngraver.ly' Parsing... frameEngraver.ly:27:1: error: GUILE signaled an error for the expression beginning here # (define-event-class 'frame-event Unbound variable: define-event-class Interpreting music... frameEngraver.ly:209:48: warning: Event class should be a list \once \override Frame #'right-extra-padding = #0 frameEngraver.ly:210:23: warning: Event class should be a list \frameStart dis'8[ e f \frameEnd ges] s2 frameEngraver.ly:212:44: warning: Event class should be a list \once \override Frame #'extender-length = #12 frameEngraver.ly:213:22: warning: Event class should be a list \frameStart d,,8[ e f \frameEnd g] s2 frameEngraver.ly:215:44: warning: Event class should be a list \once \override Frame #'extender-length = #3.5 frameEngraver.ly:216:23: warning: Event class should be a list \frameStart f'8[ aes g \frameEnd bes] s4 Preprocessing graphical objects... Finding the ideal number of pages... Fitting music on 1 page... Drawing systems... Layout output to `frameEngraver.ps'... Converting to `./frameEngraver.pdf'... fatal error: failed files: frameEngraver.ly I can't code in Scheme, and I've yet to find any tutorial in the Lilypond docs that would get me to this level of Scheme integration with Lilypond. But it seems to be the case that it throws an error once for a scheme function and again because of expected typing. Since a subsequent (relative to the message to which frameEngraver3.ly was attached) message in the thread recommended revision to frameEngraver3.ly, specifically the addition of \frameStart command marks after the frame's first pitch, I've attached my copy of the file to make it clear which code exactly has generated these errors. This might be a good scheme lesson for me, right here, come to think of it. I've got LISP, so maybe I'm not as far as I think. best, Jeff On Tue, Mar 13, 2012 at 9:33 AM, David Nalesnik david.nales...@gmail.comwrote: Hi Mike, Excellent work! I'm glad you think so! I've attached a new file that addresses some of the issues you identify above: --) It uses axis-group::width to box accidentals Beautiful! Now there's really no need for the extra padding properties. (I've kept them in the attached file, but combined them into a single property which takes a pair = 'extra-padding.) --) It creates a FrameStub grob to occupy the horizontal space that a frame line takes up (note that I don't know if this actually works - I'm not sure how to test it - but at least it doesn't crash!). Whenever you have a spanner that somehow occupies horizontal space at its bounds, you can create stub grobs that approximate this space. This technique also works for items that, for whatever reason, have heights that are difficult to approximate (see SpanBarStub and StemStub, for example). This works great for spacing on the left side. It wasn't working on the right, so I added 'extender-length in (plus a slight correction accounting for arrow-length, etc., which should be fairly easy to calculate). Now it will push everything forward nicely. One thing I've noticed, though, is that the line will not cross a bar line. If I increase the length of the extender, the bar line is simply pushed to the right. I figured out one way around this--namely, setting the X-extent of the bar line to (+inf.0 . -inf.0), which is what I do in the attached file. Of course this has other consequences. Is there any other way? --) It gets rid of some dead or unused code. Thank you very much for your improvements and explanations--I think I've learned quite a bit! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- 《〠》】〶【〖〠〗〶〛〷〚 Jeff Treviño PhD Candidate in Music Composition @ the University of California, San Diego 〖〠〗〶〛〷〚《〠》】〶 Skype: jeffreytrevino E-mail: jeffrey.trev...@gmail.com 〚《〠》】〶【〖〠〗〶〛〷 9310H Redwood Dr. La Jolla, CA 92037 USA 〖〠〗〶〛〷〚《〠》】〶【 http://www.jeffreytrevino.com/ jeffsCopyOfFrameEngraver3.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Jeff: I actually just found myself having that same exact problem tonight as well. My error says: Event class should be a list... ...just the way you mention it for your score. I'm not sure how to proceed, but I just wanted to let you know that it's not just you. And I too am not very comfortable with Scheme. I'm sure someone will help with this! :) Ben Hi all, I'm trying to get the frameEngraver3.ly code from this aleatoric notation thread going on Lilypond 2.16.0-1, and I get the following errors: GNU LilyPond 2.16.0 Processing `frameEngraver.ly' Parsing... frameEngraver.ly:27:1: error: GUILE signaled an error for the expression beginning here # (define-event-class 'frame-event Unbound variable: define-event-class Interpreting music... frameEngraver.ly:209:48: warning: Event class should be a list \once \override Frame #'right-extra-padding = #0 frameEngraver.ly:210:23: warning: Event class should be a list \frameStart dis'8[ e f \frameEnd ges] s2 frameEngraver.ly:212:44: warning: Event class should be a list \once \override Frame #'extender-length = #12 ...etc - composer | sound designer -- View this message in context: http://lilypond.1069038.n5.nabble.com/Aleatoric-modern-notation-tp18113p136120.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Jeffrey Trevino jeffrey.trevi...@gmail.com writes: Hi all, I'm trying to get the frameEngraver3.ly code from this aleatoric notation thread going on Lilypond 2.16.0-1, and I get the following errors: GNU LilyPond 2.16.0 Processing `frameEngraver.ly' Parsing... frameEngraver.ly:27:1: error: GUILE signaled an error for the expression beginning here # (define-event-class 'frame-event Unbound variable: define-event-class The code contains %% based on regression test `scheme-text-spanner.ly' %% Thanks, Mike That regression test tampered with internals of LilyPond in a manner that broke session integrity (any changes propagated to further files processed on the command line). It likely still does. The internals changed in the mean time. It was probably a mistake to ever include this regtest. It just gives people bad ideas. -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
David Nalesnik david.nales...@gmail.com writes: Hi Mike, Excellent work! I'm glad you think so! I've attached a new file that addresses some of the issues you identify above: --) It uses axis-group::width to box accidentals Beautiful! Now there's really no need for the extra padding properties. (I've kept them in the attached file, but combined them into a single property which takes a pair = 'extra-padding.) There is quite a bit of code duplication of internals of LilyPond, and likely one of the reasons that the respective functions did not have a public interface is just that it changes LilyPond for the rest of its lifetime, even when it is run on multiple files (like as part of lilypond-book). -- David Kastrup ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi developers, On 2012.03.13., at 17:33, David Nalesnik wrote: Hi Mike, Excellent work! I'm glad you think so! I've attached a new file that addresses some of the issues you identify above: --) It uses axis-group::width to box accidentals Beautiful! Now there's really no need for the extra padding properties. (I've kept them in the attached file, but combined them into a single property which takes a pair = 'extra-padding.) --) It creates a FrameStub grob to occupy the horizontal space that a frame line takes up (note that I don't know if this actually works - I'm not sure how to test it - but at least it doesn't crash!). Whenever you have a spanner that somehow occupies horizontal space at its bounds, you can create stub grobs that approximate this space. This technique also works for items that, for whatever reason, have heights that are difficult to approximate (see SpanBarStub and StemStub, for example). This works great for spacing on the left side. It wasn't working on the right, so I added 'extender-length in (plus a slight correction accounting for arrow-length, etc., which should be fairly easy to calculate). Now it will push everything forward nicely. One thing I've noticed, though, is that the line will not cross a bar line. If I increase the length of the extender, the bar line is simply pushed to the right. I figured out one way around this--namely, setting the X-extent of the bar line to (+inf.0 . -inf.0), which is what I do in the attached file. Of course this has other consequences. Is there any other way? --) It gets rid of some dead or unused code. Thank you very much for your improvements and explanations--I think I've learned quite a bit! Best, David I tried to use the frame engraver of this thread, but I was unable to do so. I'm constantly getting 'syntax error, unexpected EVENT_IDENTIFIER' errors and the LilyPond compiler won't recognize the \frameStart and \frameEnd commands. The only thing I changed was the version number itself, as I'm using the stable version (2.14.2). Do you have any idea what the problem could be? Or is this code using some specific feature of 2.15? Thanks, Ádám ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Ádám, I tried to use the frame engraver of this thread, but I was unable to do so. I'm constantly getting 'syntax error, unexpected EVENT_IDENTIFIER' errors and the LilyPond compiler won't recognize the \frameStart and \frameEnd commands. The only thing I changed was the version number itself, as I'm using the stable version (2.14.2). Do you have any idea what the problem could be? Or is this code using some specific feature of 2.15? I can't explain the difference in behavior, but with 2.14.2 you need to put \frameEnd and \frameStart after the note. So, the following can be substituted into the file attached earlier in this thread: \relative c'' { \override Stem #'transparent = ##t \override Beam #'transparent = ##t \once \override Frame #'extender-length = #8 dis'8[ \frameStart e f ges] \frameEnd s2 \once \override Frame #'extender-length = #11 d,8[ \frameStart e f g] \frameEnd s2 \once \override Staff.BarLine #'X-extent = #'(+inf.0 . -inf.0) % line can cross bar line s2 \once \override Frame #'extender-length = #3.5 fis'8[ \frameStart bes,, aes, e''] \frameEnd } -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi David, On 2012.03.26., at 23:05, David Nalesnik wrote: Hi Ádám, I tried to use the frame engraver of this thread, but I was unable to do so. I'm constantly getting 'syntax error, unexpected EVENT_IDENTIFIER' errors and the LilyPond compiler won't recognize the \frameStart and \frameEnd commands. The only thing I changed was the version number itself, as I'm using the stable version (2.14.2). Do you have any idea what the problem could be? Or is this code using some specific feature of 2.15? I can't explain the difference in behavior, but with 2.14.2 you need to put \frameEnd and \frameStart after the note. So, the following can be substituted into the file attached earlier in this thread: \relative c'' { \override Stem #'transparent = ##t \override Beam #'transparent = ##t \once \override Frame #'extender-length = #8 dis'8[ \frameStart e f ges] \frameEnd s2 \once \override Frame #'extender-length = #11 d,8[ \frameStart e f g] \frameEnd s2 \once \override Staff.BarLine #'X-extent = #'(+inf.0 . -inf.0) % line can cross bar line s2 \once \override Frame #'extender-length = #3.5 fis'8[ \frameStart bes,, aes, e''] \frameEnd } -David Thanks A LOT!!! For this, and for the frame itself as well. Best, Ádám ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi James, BTW, I didn't mention before, but it looks like I'm going to be using that feathered-beam function, derived from work by David, and this box-notation function, also coming from David's work. Oh, I just helped out a bit with that one--thanks definitely go to Harm. So David -- I guess I owe you a beer or three, or something. Glad this works for you--let me know if you run into any problems. Virtual beer(s) gladly accepted! -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
At Tue, 13 Mar 2012 11:33:30 -0500, David Nalesnik wrote: Hi Mike, Excellent work! I'm glad you think so! BTW, I didn't mention before, but it looks like I'm going to be using that feathered-beam function, derived from work by David, and this box-notation function, also coming from David's work. So David -- I guess I owe you a beer or three, or something. Thanks! James -- James Harkins /// dewdrop world jamshar...@dewdrop-world.net http://www.dewdrop-world.net Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal. -- Whitman blog: http://www.dewdrop-world.net/words audio clips: http://www.dewdrop-world.net/audio more audio: http://soundcloud.com/dewdrop_world/tracks ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mar 13, 2012, at 4:25 AM, David Nalesnik wrote: I've defined a grob, Frame, and given it several properties. One of these, 'padding, adds space between the frame and its contents, as you would expect. The length of the continuation line is controlled by the property 'extender-length. Then, there's 'extra-left-padding and 'extra-right-padding. These last are there to correct a shortcoming: I can't think of an artful way to accomodate an accidental before the first note of a group so there isn't a collision. Another problem is that the horizontal spacing doesn't adapt to the frame. I suppose this comes from the fact that I've hijacked a TextSpanner, so that collisions are reckoned with outside staff objects. Is there anything I can do about this? Excellent work! I've attached a new file that addresses some of the issues you identify above: --) It uses axis-group::width to box accidentals --) It creates a FrameStub grob to occupy the horizontal space that a frame line takes up (note that I don't know if this actually works - I'm not sure how to test it - but at least it doesn't crash!). Whenever you have a spanner that somehow occupies horizontal space at its bounds, you can create stub grobs that approximate this space. This technique also works for items that, for whatever reason, have heights that are difficult to approximate (see SpanBarStub and StemStub, for example). --) It gets rid of some dead or unused code. Cheers, MS frameEngraver2.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi Mike, Excellent work! I'm glad you think so! I've attached a new file that addresses some of the issues you identify above: --) It uses axis-group::width to box accidentals Beautiful! Now there's really no need for the extra padding properties. (I've kept them in the attached file, but combined them into a single property which takes a pair = 'extra-padding.) --) It creates a FrameStub grob to occupy the horizontal space that a frame line takes up (note that I don't know if this actually works - I'm not sure how to test it - but at least it doesn't crash!). Whenever you have a spanner that somehow occupies horizontal space at its bounds, you can create stub grobs that approximate this space. This technique also works for items that, for whatever reason, have heights that are difficult to approximate (see SpanBarStub and StemStub, for example). This works great for spacing on the left side. It wasn't working on the right, so I added 'extender-length in (plus a slight correction accounting for arrow-length, etc., which should be fairly easy to calculate). Now it will push everything forward nicely. One thing I've noticed, though, is that the line will not cross a bar line. If I increase the length of the extender, the bar line is simply pushed to the right. I figured out one way around this--namely, setting the X-extent of the bar line to (+inf.0 . -inf.0), which is what I do in the attached file. Of course this has other consequences. Is there any other way? --) It gets rid of some dead or unused code. Thank you very much for your improvements and explanations--I think I've learned quite a bit! Best, David frameEngraver3.ly Description: Binary data ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
Hi, On Sun, Mar 11, 2012 at 3:18 AM, m...@apollinemike.com m...@apollinemike.com wrote: On Mar 11, 2012, at 8:53 AM, James Harkins wrote: At Sun, 11 Mar 2012 08:12:35 +0100, m...@apollinemike.com wrote: The best way to achieve that with current LilyPond is Scheme engravers. There have been a few examples of Scheme engravers posted on this list (if you search Scheme engraver you'll find one - there are also examples in the input/regression folder of the LilyPond source). You'd want to create one that begins and ends a spanner when it hears a given event (you can invent a BoxNoteEvent, for example) and acknowledges note columns in the interim, putting them in a grob-array called note-columns or what-have-you. Then, make a print method that extracts these note columns (or whatever grobs you're interested in) finds the min/max height and width, and draws a box at those dimensions. If you want to get fancy, you can add extra spacing width to the left of the first note column and the right of the last note column to make sure there are no collisions with the box and surrounding material. I see... would it be too much to ask you to send your engraver to me (off list if you prefer)? That's of course assuming you developed one for your own music. Normally I don't mind doing some research and experimentation on my own, but in this case -- Unfortunately, the way I created mine was way hackish and not at all extensible, intelligent, or suitable to your needs (I hijacked a beam grob). The best thing to do is go ahead w/ the score as if it were to have boxes and then put something like : c d %\startBoxedNotes e f g %\endBoxedNotes wherever you need it. There are enough people on this list who know Scheme that someone is likely to pop up w/ a more fleshed-out solution in the next 6 weeks, and if not, in 6 weeks (if not less), I'll have some time to give it a go. Awhile ago, I worked a little on an engraver which would add boxes to groups of notes (and include articulations and dynamics as well). I gave up on it, but decided to revive it in response to this thread. I hope what I've come up with will prove useful for frame notation. I've defined a grob, Frame, and given it several properties. One of these, 'padding, adds space between the frame and its contents, as you would expect. The length of the continuation line is controlled by the property 'extender-length. Then, there's 'extra-left-padding and 'extra-right-padding. These last are there to correct a shortcoming: I can't think of an artful way to accomodate an accidental before the first note of a group so there isn't a collision. Another problem is that the horizontal spacing doesn't adapt to the frame. I suppose this comes from the fact that I've hijacked a TextSpanner, so that collisions are reckoned with outside staff objects. Is there anything I can do about this? This is all very rough, but perhaps it can serve as a starting point. Any suggestions for improvement are welcome! HTH, David frameEngraver.ly Description: Binary data attachment: frameEngraver.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On 3/11/12 12:53 AM, James Harkins jamshar...@gmail.com wrote: At Sun, 11 Mar 2012 08:12:35 +0100, m...@apollinemike.com wrote: The best way to achieve that with current LilyPond is Scheme engravers. There have been a few examples of Scheme engravers posted on this list (if you search Scheme engraver you'll find one - there are also examples in the input/regression folder of the LilyPond source). You'd want to create one that begins and ends a spanner when it hears a given event (you can invent a BoxNoteEvent, for example) and acknowledges note columns in the interim, putting them in a grob-array called note-columns or what-have-you. Then, make a print method that extracts these note columns (or whatever grobs you're interested in) finds the min/max height and width, and draws a box at those dimensions. If you want to get fancy, you can add extra spacing width to the left of the first note column and the right of the last note column to make sure there are no collisions with the box and surrounding material. I see... would it be too much to ask you to send your engraver to me (off list if you prefer)? That's of course assuming you developed one for your own music. Normally I don't mind doing some research and experimentation on my own, but in this case -- You might offer a bounty to Mike or to David Kastrup, in which case they would write the custom engraver for you. HTH, Carl ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mar 11, 2012, at 5:33 AM, James Harkins wrote: Possibly a common question, sorry if asked and answered before, but Google failed me... I'm considering some aleatoric notation (so-called box notation) for a piece but couldn't find info in the manuals (the contemporary notation section of the 2.14.2 docs @ lilypond.org is empty), or in the LSR, or Google searches to find out how to realize it. By box notation I mean collections of gestures/phrases, enclosed in a box, with an arrow indicating to keep doing that until the arrow stops. The phrases could use normal rhythmic notation or proportional notation without stems/flags. Some time ago, somebody posted a link to Mike Solomon's granini di luce beccucciati da uccelli di silenzio as an example of contemporary notation. The attached pic from it illustrates more-or-less what I'm after (though I wouldn't need the slash). Thanks! James Hey James, The best way to achieve that with current LilyPond is Scheme engravers. There have been a few examples of Scheme engravers posted on this list (if you search Scheme engraver you'll find one - there are also examples in the input/regression folder of the LilyPond source). You'd want to create one that begins and ends a spanner when it hears a given event (you can invent a BoxNoteEvent, for example) and acknowledges note columns in the interim, putting them in a grob-array called note-columns or what-have-you. Then, make a print method that extracts these note columns (or whatever grobs you're interested in) finds the min/max height and width, and draws a box at those dimensions. If you want to get fancy, you can add extra spacing width to the left of the first note column and the right of the last note column to make sure there are no collisions with the box and surrounding material. Cheers, MS ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
On Mar 11, 2012, at 8:53 AM, James Harkins wrote: At Sun, 11 Mar 2012 08:12:35 +0100, m...@apollinemike.com wrote: The best way to achieve that with current LilyPond is Scheme engravers. There have been a few examples of Scheme engravers posted on this list (if you search Scheme engraver you'll find one - there are also examples in the input/regression folder of the LilyPond source). You'd want to create one that begins and ends a spanner when it hears a given event (you can invent a BoxNoteEvent, for example) and acknowledges note columns in the interim, putting them in a grob-array called note-columns or what-have-you. Then, make a print method that extracts these note columns (or whatever grobs you're interested in) finds the min/max height and width, and draws a box at those dimensions. If you want to get fancy, you can add extra spacing width to the left of the first note column and the right of the last note column to make sure there are no collisions with the box and surrounding material. I see... would it be too much to ask you to send your engraver to me (off list if you prefer)? That's of course assuming you developed one for your own music. Normally I don't mind doing some research and experimentation on my own, but in this case -- Unfortunately, the way I created mine was way hackish and not at all extensible, intelligent, or suitable to your needs (I hijacked a beam grob). The best thing to do is go ahead w/ the score as if it were to have boxes and then put something like : c d %\startBoxedNotes e f g %\endBoxedNotes wherever you need it. There are enough people on this list who know Scheme that someone is likely to pop up w/ a more fleshed-out solution in the next 6 weeks, and if not, in 6 weeks (if not less), I'll have some time to give it a go. Cheers, MS ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
At Sun, 11 Mar 2012 13:40:19 +, Carl Sorensen wrote: You might offer a bounty to Mike or to David Kastrup, in which case they would write the custom engraver for you. Thinking about that... either monetary or a delivery from a microbrewery? :-p This might be viable in the meantime. I already know how to make a zigzag using a glissando following it. http://lsr.dsi.unimi.it/LSR/Item?id=377 hjh -- James Harkins /// dewdrop world jamshar...@dewdrop-world.net http://www.dewdrop-world.net Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal. -- Whitman blog: http://www.dewdrop-world.net/words audio clips: http://www.dewdrop-world.net/audio more audio: http://soundcloud.com/dewdrop_world/tracks ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Aleatoric / modern notation
Possibly a common question, sorry if asked and answered before, but Google failed me... I'm considering some aleatoric notation (so-called box notation) for a piece but couldn't find info in the manuals (the contemporary notation section of the 2.14.2 docs @ lilypond.org is empty), or in the LSR, or Google searches to find out how to realize it. By box notation I mean collections of gestures/phrases, enclosed in a box, with an arrow indicating to keep doing that until the arrow stops. The phrases could use normal rhythmic notation or proportional notation without stems/flags. Some time ago, somebody posted a link to Mike Solomon's granini di luce beccucciati da uccelli di silenzio as an example of contemporary notation. The attached pic from it illustrates more-or-less what I'm after (though I wouldn't need the slash). Thanks! James -- James Harkins /// dewdrop world jamshar...@dewdrop-world.net http://www.dewdrop-world.net Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal. -- Whitman blog: http://www.dewdrop-world.net/words audio clips: http://www.dewdrop-world.net/audio more audio: http://soundcloud.com/dewdrop_world/tracks inline: box-notation.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Aleatoric / modern notation
At Sun, 11 Mar 2012 08:12:35 +0100, m...@apollinemike.com wrote: The best way to achieve that with current LilyPond is Scheme engravers. There have been a few examples of Scheme engravers posted on this list (if you search Scheme engraver you'll find one - there are also examples in the input/regression folder of the LilyPond source). You'd want to create one that begins and ends a spanner when it hears a given event (you can invent a BoxNoteEvent, for example) and acknowledges note columns in the interim, putting them in a grob-array called note-columns or what-have-you. Then, make a print method that extracts these note columns (or whatever grobs you're interested in) finds the min/max height and width, and draws a box at those dimensions. If you want to get fancy, you can add extra spacing width to the left of the first note column and the right of the last note column to make sure there are no collisions with the box and surrounding material. I see... would it be too much to ask you to send your engraver to me (off list if you prefer)? That's of course assuming you developed one for your own music. Normally I don't mind doing some research and experimentation on my own, but in this case -- - This is for a concert that will be in mid-May, for which I'm writing a new piece and I will have to rehearse everything else as well. - I'm also turning some students loose on a big SuperCollider interface to connect webcam (and maybe iphone) data to sound parameters. Lots of bugs popping up there. That will probably be on the same concert. - Full-time teaching schedule. I worry that I wouldn't have time to cobble together enough scheme knowledge (starting from nothing) to put together my own engraver... by which I mean, I'm really under serious time pressure and if this is going to take, oh, more than a couple of hours, it's more than I can afford right now. (I'm estimating 10-15 hours.) I'd really appreciate it -- otherwise, I'll find another way to notate the idea. James -- James Harkins /// dewdrop world jamshar...@dewdrop-world.net http://www.dewdrop-world.net Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal. -- Whitman blog: http://www.dewdrop-world.net/words audio clips: http://www.dewdrop-world.net/audio more audio: http://soundcloud.com/dewdrop_world/tracks ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user