Re: separating design from pure score
Hi Stjepan, sorry that I don't have the time to really go through this thread (so I might misunderstand sth). But I think you should separate your music variables from your score definition, so you can \include them separately: music.ly myMusic = { ... } score.ly \score { \new Staff \myMusic \myMarks } Then you can have your master file like: \include music.ly myMarks = { ... } \include score.ly Does that help? Best Urs Am 15.03.2012 11:23, schrieb Stjepan Horvat: Hello all..thank you for you anwsers..i really appreciate it..It's not exactly what i wanted..but it helps me figure out more what i want and what will be my solution..! David Kastrup leads in this direction what i'm trying ta achive..The diference form Hans Aikema is that i want to include music in a diffrent file which i compile afterwords..The reason for that is that i want to define music as is..Becouse each song is uniq and unchangable..So i dont ever have to change the music file. For Example: 1. I want the score to be minimalistic and to be sufficient in itself. = score.ly = \verison 2.14.2 \header { title = TITLE composer = COMPOSER } mymusic = \relative c' { c4 d e f \mark \default g } mylyrics = \lyricmode { c d e f g } mychords = \chordmode { c1 c4 } \score { \new ChordNames { \mychords } \new Staff { \mymusic } \addlyrics { \mylyrics } } end of score.ly Minimalistic as i said. Maybe even without \mark \default. So now in design.ly i would set the fonts and paper and whatever would be static in project period. I think the layout should work here. And on the end. master.ly \include ./desing.ly \include ./score.ly %now here should go the paddings for this specifig song couse every song looks difrent and has diffrent bar numbers..Now i would want to maybe use \break command but inside the score..So here comes my problem. Becouse the score block is included while including score.ly (i would want only the variable to be included) i can't make a mark blok where i would define simple marks and bar brakes. paper { markup-system-spacing #'padding = #5 markup-system-spacing #'stretchability = #5 score-system-spacing #'padding = #5 last-bottom-spacing #'padding = #5 score-markup-spacing #'padding = #5 top-system-spacing #'padding = #17.5 } marks = { \set Score.markFormatter = #format-mark-box-barnumbers \hideNotes R1 \break \bar || \mark \default \unHideNotes \bar |. } \score { \new ChordNames { \mychords } \new Staff { \mymusic \marks} \addlyrics { \mylyrics } } end of master.ly I would only compile the maste.ly file.. I think i made myself clear..:) Thanks for further guidence. On Wed, Mar 14, 2012 at 9:31 PM, Hans Aikemahans.aik...@aikebah.net wrote: On 14-3-2012 19:16, Stjepan Horvat wrote: Hello, I'm working on a project and i want to separate the design from score because i want to have a clear score so that in the future when i maybe want to change the design i dont have to change the score (something like html and CSS :) ). So when i include my score into my design file variables are included but score block also. Now when i what to change, for example, \mark \default to have a preety box i dont know where to put it. Is there a way not to include a score block but all variables, or insert stuff into a score block that is invisible to me? If I understand your request correctly you're looking for a similar structure as what I'm working with for generating beamerslides of songs including their music. In that case the \include command is your friend. What I have in my projects: format/BaseBeamerslideDesign.ly contains - a \paper section containing lots of formatting settings - a \layout setting containing lots of formatting settings - an include for yet another lilypond file containing useful scheme functions such as the override-color-for-allgrobs scheme funtion I found in the LSR: http://lsr.dsi.unimi.it/LSR/Item?id=443 - variable definitions for a music staff (muziekbalk) and its associated lyrics (verstekst): muziekbalk = { \new Staff \new Voice = myMelody { \melodie } } verstekst = {\new Lyrics \lyricsto myMelody { \tekst }} format/BeamerRegular.ly contains - an include of format\BaseBeamerslideDesign.ly - a Score block combining the variables defined in BaseBeamerSlideDesign into an actual Score and override of the grob-colors to get colored output: === format/BeamerRegular.ly sample === \include BaseBeamerslideDesign.ly \score { \applyContext #(override-color-for-all-grobs white) \muziekbalk \verstekst } === end of format/BeamerRegular.ly === Then any song requiring the beamer slide format: - a \header block - a variable definition called 'melodie' (which is refered to in the format\BaseBeamerslideDesign.ly mentioned above) containing the melody of the song - a variable definition called 'tekst' which is refered to in the format\BaseBeamerslideDesign.ly mentioned above)
Re: Question about missing accidentals, and banishing stems
Does the accidental-style forget work for your case? Am 26.03.2012 18:05, schrieb Robert Schmaus: Hi Michael, the whole music is defined in a single cadenza with manual barlines in between. so, from pov of lilypond, all the music is in one bar, thus, the second ees doesn't sport an accidental. Use ees! to force the accidental ... Best, Robert On Sun, Mar 25, 2012, at 09:01 PM, Michael Welsh Duggan wrote: I was writing some experimental lilypond in preparation for writing some music functions. The following lilypond file creates two variables which contain a line of notes and a line of lyrics together in a cons cell. The score attempts to join the two. Output is attached. The question is, why is the e-flat in the second part not getting its accidental printed? (The e-flat in the first part prints just fine.) Sub-question: I got rid of stems by removing the stem engraver. The slurs, however, look like they are trying to take into account the missing stems. How can I avoid this? [Inline image] -- Michael Welsh Duggan (m...@md5i.com) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Email had 2 attachments: + PopuleMeus.ly 1k (text/x-lilypond) + PopuleMeus.png 22k (image/png) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: node head positions
Am 11.04.2012 00:28, schrieb Tim Roberts: Huang wrote: Yes, I am looking for a way to highlight notes while playing MIDI. I will definitely check Frescobaldi to see how it works. I need to understand how Lily generates these notes and find out their positions. I just want to caution you about how difficult this task will be. The PDF output does contain a link for each note that tells you where, in the original LilyPond input file, that note or chord originated. It does NOT tell you the note's pitch or duration, and that information is not trivially derivable from the original source, either. There's no good way to line up the PDF with the MIDI. But there _have_ been efforts in such directions, isn't it? I recall someone having a (drum?) score doing exactly this. He used the SVG output IIRC ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Barline type before \time change
Hello list, I'm sorry, but I can't find the relevant documentation. I want to change lilyPond's default behaviour and tell it to use || barlines before \time changes instead of normal ones. Although it is quite easy to do this manually, I'd like to know where and how I could change this setting, possibly in a \layout section. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Barline type before \time change
Hello Jan-Peter and Tim, thanks for your replies. I would like to use this on sources I'm already working on. So I don't need to use your include construct. But I think I'll try out your Scheme engraver approach. If it doesn't work or behave as I would like, then I'll go for entering the double bars manually. This is of course manageable, but I'd find it cleaner to have it as a 'setting' in the layout block and use simple \time commands in the source. Best Urs Am 13.04.2012 09:49, schrieb Jan-Peter Voigt: Hello Urs, There are two possibilities: 1.: use a little music-function-helper: --snip-- \version 2.15.36 dbtime = #(define-music-function (parser location frac)(fraction?) #{ \bar || \time $frac #}) % example \relative c' { c4 e g b \dbtime 3/4 c des b | c2. } --snip-- but this means not using the standard \time command. 2.: If you want to have this effect on existing sources, you might want to use a scheme-engraver. This is based on a snippet, I took from this list ... I think David Nalesnik wrote it(?) --snip-- \version 2.15.36 % this might work in 2.14 too? DbBars = #(lambda (context) (let ((time-signature '()) (last-fraction #f)) `((process-music . ,(lambda (trans) (let ((frac (ly:context-property context 'timeSignatureFraction))) (if (and (null? time-signature) (not (equal? last-fraction frac)) (fraction? frac)) (begin (ly:context-set-property! context 'whichBar ||) (set! last-fraction frac) ))) )) (stop-translation-timestep . ,(lambda (trans) (set! time-signature '() )) % example \score { \relative c' { c4 e g b \time 3/4 c des b | c2. } \layout { \context { \Score \consists \DbBars } } } --snip-- With the engraver, you should be able to include an existing file while using this custom engraver globally: --snip-- \layout { \context { \Score \consists \DbBars } } \include mymusic.ly --snip-- HTH Cheers, Jan-Peter On 12.04.2012 16:29, Urs Liska wrote: Hello list, I'm sorry, but I can't find the relevant documentation. I want to change lilyPond's default behaviour and tell it to use || barlines before \time changes instead of normal ones. Although it is quite easy to do this manually, I'd like to know where and how I could change this setting, possibly in a \layout section. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Barline type before \time change
Hi Jan-Peter, thanks a lot, works perfectly! Am 13.04.2012 11:49, schrieb Urs Liska: Hello Jan-Peter and Tim, thanks for your replies. I would like to use this on sources I'm already working on. So I don't need to use your include construct. But I think I'll try out your Scheme engraver approach. If it doesn't work or behave as I would like, then I'll go for entering the double bars manually. This is of course manageable, but I'd find it cleaner to have it as a 'setting' in the layout block and use simple \time commands in the source. Best Urs Am 13.04.2012 09:49, schrieb Jan-Peter Voigt: Hello Urs, There are two possibilities: 1.: use a little music-function-helper: --snip-- \version 2.15.36 dbtime = #(define-music-function (parser location frac)(fraction?) #{ \bar || \time $frac #}) % example \relative c' { c4 e g b \dbtime 3/4 c des b | c2. } --snip-- but this means not using the standard \time command. 2.: If you want to have this effect on existing sources, you might want to use a scheme-engraver. This is based on a snippet, I took from this list ... I think David Nalesnik wrote it(?) --snip-- \version 2.15.36 % this might work in 2.14 too? DbBars = #(lambda (context) (let ((time-signature '()) (last-fraction #f)) `((process-music . ,(lambda (trans) (let ((frac (ly:context-property context 'timeSignatureFraction))) (if (and (null? time-signature) (not (equal? last-fraction frac)) (fraction? frac)) (begin (ly:context-set-property! context 'whichBar ||) (set! last-fraction frac) ))) )) (stop-translation-timestep . ,(lambda (trans) (set! time-signature '() )) % example \score { \relative c' { c4 e g b \time 3/4 c des b | c2. } \layout { \context { \Score \consists \DbBars } } } --snip-- With the engraver, you should be able to include an existing file while using this custom engraver globally: --snip-- \layout { \context { \Score \consists \DbBars } } \include mymusic.ly --snip-- HTH Cheers, Jan-Peter On 12.04.2012 16:29, Urs Liska wrote: Hello list, I'm sorry, but I can't find the relevant documentation. I want to change lilyPond's default behaviour and tell it to use || barlines before \time changes instead of normal ones. Although it is quite easy to do this manually, I'd like to know where and how I could change this setting, possibly in a \layout section. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Understanding how LilyPond handles external fonts
Hello list, I have some difficulties understanding how to access the different versions/weights/styles of external fonts (in markups mode). And I'm not sure if this is a LilyPond or rather a documentation issue. So before submitting a documentation suggestion I'd like to really understand the issue. I understand that I have to override the font-name property to access external fonts. For example \override TextScript #'font-name = #Arial or \markup { \override #'(font-name . Arial) ... } What I'm not really clear about is how LilyPond accesses the different variations of the fonts. It seems that overriding font-series doesn't have an effect at all. Instead I seem to have to specify the full font-name So \markup { \override #'(font-name . Arial) \override #'(font-series . bold) } doesn't work, while \markup { \override #'(font-name . Arial Bold) ... } does. So if this is true (and not considered as a bug) I think there would be the need for a documentation improvement. To understand this topic I have another question: What is the correct form of the font-name that has to be specified? Where does LilyPond look at? I have a font family installed which has a great variety of fonts, lets call it Minion Pro. Let's say I want to use the Medium Condensed version, then how should I know what name to use here? In Scribus it is called Medium Cond, in OpenOffice Med Cond, Fontmatrix gives me - Medium Cond - Postscript name MediumCn Nowhere I find Medium Condensed, but this is the only one that works with LilyPond. Any ideas? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Oldstyle Figures (OSF) from OpenType Font
Hello list, can anybody tell me if I can use the 'Old Style Figure' subset of an OpenType font in markups? Thank you for any help Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
\makeOctaves broken?
I was quite happy to find the function \makeOctaves in the LSR. But now it seems to be broken - there is no error message, but the function doesn't do anything (2.15.36). As I don't know _anything_ about Scheme I can't do more than ask if anybody has an idea what has changed with LilyPond so that this function is now broken? I thought I could live without \makeOctaves (at least for some time). But now I've come across a piece that practically consists of octaves ... Any help would really be apreciated. Best Urs %LSR This function was contributed by Jay Anderson. #(define (octave-up m t) (let* ((octave (1- t)) (new-note (ly:music-deep-copy m)) (new-pitch (ly:make-pitch octave (ly:pitch-notename (ly:music-property m 'pitch)) (ly:pitch-alteration (ly:music-property m 'pitch) (set! (ly:music-property new-note 'pitch) new-pitch) new-note)) #(define (octavize-chord elements t) (cond ((null? elements) elements) ((eq? (ly:music-property (car elements) 'name) 'NoteEvent) (cons (car elements) (cons (octave-up (car elements) t) (octavize-chord (cdr elements) t (else (cons (car elements) (octavize-chord (cdr elements ) t) #(define (octavize music t) (if (eq? (ly:music-property music 'name) 'EventChord) (ly:music-set-property! music 'elements (octavize-chord (ly:music-property music 'elements) t))) music) makeOctaves = #(define-music-function (parser location arg mus) (integer? ly:music?) (music-map (lambda (x) (octavize x arg)) mus)) \relative c' { \time 3/8 \key gis \minor \makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8} \makeOctaves #-1 { ais' gis dis) cis( disdis gis') } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \makeOctaves broken?
Hi Jay, Thanks for the link. I'l look into it, but am practically sure that I won't be able to fix anything. As mentioned I don't have any experience with Scheme. Best Urs BTW: The current piece not only has plenty of octaves (one voice is virtually octaves-only), but each octave has a -. articulation on it :-( Am 19.04.2012 04:23, schrieb Jay Anderson: On Wed, Apr 18, 2012 at 4:44 PM, Urs Liskali...@ursliska.de wrote: I was quite happy to find the function \makeOctaves in the LSR. But now it seems to be broken - there is no error message, but the function doesn't do anything (2.15.36). As I don't know _anything_ about Scheme I can't do more than ask if anybody has an idea what has changed with LilyPond so that this function is now broken? David Kastrup did a quick fix a few months back:http://lists.gnu.org/archive/html/lilypond-user/2012-03/msg00114.html I just tried it and it had a few problems: - it didn't work within a relative section. It only worked within relative sections before. - Slurs and dynamics attached to single notes are lost during the conversion to chords. Below fixes the relative problem, but I haven't spent enough time on it to figure out the second problem. That will take a little bit more time to understand the internal structure changes which I don't have at the moment. Perhaps you can take a look and make it work. -Jay \version 2.15.35 #(define (with-octave-up m octave) (let* ((old-pitch (ly:music-property m 'pitch)) (new-note (ly:music-deep-copy m)) (new-pitch (ly:make-pitch (- octave 1) (ly:pitch-notename old-pitch) (ly:pitch-alteration old-pitch (set! (ly:music-property new-note 'pitch) new-pitch) (list m new-note))) #(define (octavize music t) (map-some-music (lambda (m) (cond ((music-is-of-type? m 'event-chord) (set! (ly:music-property m 'elements) (append-map! (lambda (n) (if (music-is-of-type? n 'note-event) (with-octave-up n t) (list n))) (ly:music-property m 'elements))) m) ((music-is-of-type? m 'note-event) (make-event-chord (with-octave-up m t))) (else #f))) music)) makeOctaves = #(define-music-function (parser location arg mus) (integer? ly:music?) (octavize mus arg)) \relative c' { \time 3/8 \key gis \minor \makeOctaves #1 { dis8(\f e dis')~ dis8.( cis16 b8 } \makeOctaves #-1 { ais' gis dis) cis( disdis gis')\p } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \makeOctaves broken?
Hi all, thank you very much for all these thoughts. I'm so sorry that I don't understand a (Scheme) word from it ... But judging from my programming experience in other languages David's last solution looks _very_ elegant. And it seems to work, even with still more complex chords and multiple articulations. I'd suggest to rename the function though, because makeOctaves suggests that it (only) makes octaves from monophonic notes. And it may be of interest to note that the function also works with other values than +/- 1, and that it can be nested: \relative c { \time 3/8 \key gis \minor \makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8) } \makeOctaves #2 { ais8. gis32_| fis^| e8^._- } \makeOctaves #2 { \makeOctaves #-1 { ais'( gis-. dis-.) cis( disdis gis') e g bes f d'_^^.fis cis' gis'_.^- } } } Any chance to get this incorporated to default LilyPond syntax? Best (and many thanks) Urs Am 19.04.2012 09:56, schrieb David Kastrup: Urs Liskali...@ursliska.de writes: [...] I recommend a healthy dose of cheating. The main non-triviality seems to be dealing with relative music properly. Other than that it is just \transpose c' c'' $xxx $xxx or similar. So let's treat the problem at the root, with a to-relative-callback for the transposed music that a) returns the unchanged reference pitch for the sake of the following music b) temporarily undoes the octave transposition for the sake of relativizing. makeOctaves = #(define-music-function (parser location arg mus) (integer? ly:music?) #{ \withMusicProperty #'to-relative-callback #(lambda (m p) (let ((mu (ly:music-property m 'element))) (ly:music-transpose mu (ly:make-pitch (- arg) 0 0)) (ly:make-music-relative! mu p) (ly:music-transpose mu (ly:make-pitch arg 0 0))) p) \transpose c' $(ly:make-pitch arg 0 0) $mus $mus #}) \relative c' { \time 3/8 \key gis \minor \makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8} \makeOctaves #-1 { ais' gis dis) cis( disdis gis') } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \makeOctaves broken?
just another observation: While it worked smoothly with the last example, the function complains when there are phrasingSlurs involved. I get a message saying a) (at the beginning) that there already is a phrasingSlur and b) (at the end) that the phrasingSlur can't be ended. The result is correct, though. BTW: shouldn't it be quite easy (and interesting) to modify the function so that arg doesn't mean the number of octaves but a number of semitones? Best Urs Am 19.04.2012 19:58, schrieb Urs Liska: Hi all, thank you very much for all these thoughts. I'm so sorry that I don't understand a (Scheme) word from it ... But judging from my programming experience in other languages David's last solution looks _very_ elegant. And it seems to work, even with still more complex chords and multiple articulations. I'd suggest to rename the function though, because makeOctaves suggests that it (only) makes octaves from monophonic notes. And it may be of interest to note that the function also works with other values than +/- 1, and that it can be nested: \relative c { \time 3/8 \key gis \minor \makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8) } \makeOctaves #2 { ais8. gis32_| fis^| e8^._- } \makeOctaves #2 { \makeOctaves #-1 { ais'( gis-. dis-.) cis( disdis gis') e g bes f d'_^^.fis cis' gis'_.^- } } } Any chance to get this incorporated to default LilyPond syntax? Best (and many thanks) Urs Am 19.04.2012 09:56, schrieb David Kastrup: Urs Liskali...@ursliska.de writes: [...] I recommend a healthy dose of cheating. The main non-triviality seems to be dealing with relative music properly. Other than that it is just \transpose c' c'' $xxx $xxx or similar. So let's treat the problem at the root, with a to-relative-callback for the transposed music that a) returns the unchanged reference pitch for the sake of the following music b) temporarily undoes the octave transposition for the sake of relativizing. makeOctaves = #(define-music-function (parser location arg mus) (integer? ly:music?) #{ \withMusicProperty #'to-relative-callback #(lambda (m p) (let ((mu (ly:music-property m 'element))) (ly:music-transpose mu (ly:make-pitch (- arg) 0 0)) (ly:make-music-relative! mu p) (ly:music-transpose mu (ly:make-pitch arg 0 0))) p) \transpose c' $(ly:make-pitch arg 0 0) $mus $mus #}) \relative c' { \time 3/8 \key gis \minor \makeOctaves #1 { dis8( e dis')~ dis8.( cis16 b8} \makeOctaves #-1 { ais' gis dis) cis( disdis gis') } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
controlling footnote separator line
Hello list, I was very pleased to see that by now one can write footnotes quite easily. Unfortunately I didn't find the property that controls the line separating the footnote. from the score. I would like to have the footnote either without any separator or with a short, left-aligned line. Is this possible? is it documented (and I am blind)? or is this impossible? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: controlling footnote separator line
Hi Gilles, thank you very much. Looks very promising. Best Urs Am 20.04.2012 10:43, schrieb Gilles: Unfortunately I didn't find the property that controls the line separating the footnote. from the score. Is this possible? is it documented (and I am blind)? or is this impossible? Well not easy to find. In paper-defaults-init.ly, you have some variable controlling Footnotes. By default, the settings are \paper { footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline } footnote-padding = 0.5\mm footnote-footer-padding = 0.5\mm footnote-number-raise = 0.5\mm footnote-numbering-function = #numbered-footnotes reset-footnotes-on-new-page = ##t } If you set : footnote-separator-markup = \markup \null it will do the trick. Gilles ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Oldstyle Figures (OSF) from OpenType Font
Thanks for pointing to this, Werner. Just a question: In the issue report you say, LilyPond doesn't currenty (i.e. Nov 2010) support OpenType features. LilyPond does support ligatures and kerning (at least on Linux, it seems this doesn't work on Windows). Are these no OpenType features? Or have there been improvements since your report? Best Urs Am 21.04.2012 19:26, schrieb Werner LEMBERG: I may be mistaken, but I don't believe there is currently a way to do this. Perhaps post to the Bugs list as a feature request? http://code.google.com/p/lilypond/issues/detail?id=1388 Werner ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Oldstyle Figures (OSF) from OpenType Font
Unfortunately that's not possible because I can't select my font according to this. And it's not a show stopper not to have OSF, just an inconvenience. I assume such an improvement would be a non-trivial issue? Best Urs Am 22.04.2012 02:42, schrieb Nick Payne: On 22/04/12 08:26, Urs Liska wrote: Thanks for pointing to this, Werner. Just a question: In the issue report you say, LilyPond doesn't currenty (i.e. Nov 2010) support OpenType features. LilyPond does support ligatures and kerning (at least on Linux, it seems this doesn't work on Windows). Are these no OpenType features? Or have there been improvements since your report? You could use a font that defaults to old style figures. For example, Spectrum MT: \relative c'' { c4^\markup { \override #'(font-name . SpectrumMT SC) 0123456789 } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Make Tie a Slur
Am 21.04.2012 17:53, schrieb Pavel Roskin: Quoting Nils l...@nilsgey.de: Hello, I have 70 pieces with ties and slurs here. They are already in Lilypond with the correct syntax. Now my publisher says he wants that ties look like slurs. I couldn't disagree more but I have no choice here. Any suggestions how make the ties look like slurs without changing them all manually? It may be possible to write an engraver that would get tie events, hide ties and create slurs instead. But I see little motivation to do something that won't improve music typesetting. You may want to replace ties with macros that can expand to a slur or to a tie. %% Insane publisher %tieStart = ( %tieEnd = ) % Sane publisher tieStart = ~ tieEnd = {} { c'' \tieStart c'' \tieEnd } I don't think this is something the OP wants to do as he has 70 finished pieces. What he wants is a general override to achieve the desired look, isn't it? Nils, you might get help if you tell us what it is you want to achieve. Maybe post images of the current and the desired output? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Make Tie a Slur
Am 22.04.2012 15:05, schrieb Nils: Sun, 22 Apr 2012 14:47:57 +0200 schrieb Urs Liskali...@ursliska.de: Am 21.04.2012 17:53, schrieb Pavel Roskin: Quoting Nilsl...@nilsgey.de: Hello, I have 70 pieces with ties and slurs here. They are already in Lilypond with the correct syntax. Now my publisher says he wants that ties look like slurs. I couldn't disagree more but I have no choice here. Any suggestions how make the ties look like slurs without changing them all manually? It may be possible to write an engraver that would get tie events, hide ties and create slurs instead. But I see little motivation to do something that won't improve music typesetting. You may want to replace ties with macros that can expand to a slur or to a tie. %% Insane publisher %tieStart = ( %tieEnd = ) % Sane publisher tieStart = ~ tieEnd = {} { c'' \tieStart c'' \tieEnd } I don't think this is something the OP wants to do as he has 70 finished pieces. What he wants is a general override to achieve the desired look, isn't it? Nils, you might get help if you tell us what it is you want to achieve. Maybe post images of the current and the desired output? Best Urs The end results are ties that look like slurs. And slurs should look like slurs as well :) The idea is a more curved version. When I asked the publisher for an example he told me the real slurs are perfectly fine. He sees no distinction between a slur and a tie. For him it is only the context which decides if it is a slur or a tie. This is so wrong, but what can I do... While it is not impossible to regexp my way through the files I would be happy to find a less intrusive solution since I want to use the files for myself in the end privately. With real ties. Nils Then please make a few tiny examples comparing real ties and real slurs instead of them. Probably I won't be of much help then (although I may try). But this would be a concrete question which probably would trigger some assistance on this list ;-) Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
parenthesizing arpeggios
Dear listers, I thought it should be simple and straightforward, but I don't understand how to put an arpeggio in brackets. If I use this code I only get a very small parenthesis: \version 2.15.36 \relative c' { %\once \override ParenthesesItem #'font-size = #6 c g' e'-\parenthesize \arpeggio } If I use the (commented out) override, I get a much bigger parenthesis but this doesn't work at all, because it is too wide and round. Is there a possibility to put brackets around objects and let the brackets adapt to the height of the objects (like spanners)? Thanks for hints Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: parenthesizing arpeggios
Thank you very much, I will try this out later today. By overriding the stencil directly you have already solved my other problem that I didn't even post so far ;-) Now I can write a macro editorialArpeggio = { \once \override Arpeggio ... } I need this because I place all my editor's additions in an extra file. They are then processed through a draftMode.ily to color them while I'm still in the editing process ... Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. David Nalesnik david.nales...@gmail.com schrieb: Hi again! Here's something that works for arpeggios. The attached file is a bit large because I needed to include several functions from stencil.scm to draw the parentheses. Oh, what ever was I thinking! No need at all for all that duplicated code... This is all you need: \version 2.15.36 \relative c' { \override Arpeggio #'stencil = #(lambda (grob) (parenthesize-stencil (ly:arpeggio::print grob) 0.1 0.5 0.5 0.2)) \override Arpeggio #'before-line-breaking = #(lambda (grob) (set! (ly:grob-property grob 'X-extent) (ly:stencil-extent (ly:grob-property grob 'stencil) X))) \repeat unfold 4 { c g' e'-\arpeggio } cis dis fis gis cis dis gis-\arpeggio cis dis fis gis cis dis-\arpeggio cis dis fis gis cis-\arpeggio cis dis fis gis-\arpeggio } -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Fwd: Re: parenthesizing arpeggios
Thanks again very much. I checked it out and it works perfectly! Just for the record (or anybody who searches), this is what I did: \version 2.15.36 parenthArpeggio= { \once \override Arpeggio #'stencil = #(lambda (grob) (parenthesize-stencil (ly:arpeggio::print grob) 0.1 0.5 0.5 0.2)) \once \override Arpeggio #'before-line-breaking = #(lambda (grob) (set! (ly:grob-property grob 'X-extent) (ly:stencil-extent (ly:grob-property grob 'stencil) X))) } parenthArpeggioDraft = { \parenthArpeggio \once \override Arpeggio #'color = #red } \relative c' { \repeat unfold 4 { c g' e'-\arpeggio } \parenthArpeggiocis dis fis gis cis dis gis-\arpeggio cis dis fis gis cis dis-\arpeggio \parenthArpeggioDraftcis dis fis gis cis-\arpeggio cis dis fis gis-\arpeggio } Hope it helps somebody ... Best Urs Original-Nachricht Betreff:Re: parenthesizing arpeggios Datum: Sun, 22 Apr 2012 20:23:01 -0500 Von:David Nalesnik david.nales...@gmail.com An: Urs Liska li...@ursliska.de Kopie (CC): Lilypond-User lilypond-user@gnu.org Hi again! Here's something that works for arpeggios. The attached file is a bit large because I needed to include several functions from stencil.scm to draw the parentheses. Oh, what ever was I thinking! No need at all for all that duplicated code... This is all you need: \version 2.15.36 \relative c' { \override Arpeggio #'stencil = #(lambda (grob) (parenthesize-stencil (ly:arpeggio::print grob) 0.1 0.5 0.5 0.2)) \override Arpeggio #'before-line-breaking = #(lambda (grob) (set! (ly:grob-property grob 'X-extent) (ly:stencil-extent (ly:grob-property grob 'stencil) X))) \repeat unfold 4 { c g' e'-\arpeggio } cis dis fis gis cis dis gis-\arpeggio cis dis fis gis cis dis-\arpeggio cis dis fis gis cis-\arpeggio cis dis fis gis-\arpeggio } -David attachment: parenthArpeggio.preview.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: controlling footnote separator line
Am 20.04.2012 10:43, schrieb Gilles: Unfortunately I didn't find the property that controls the line separating the footnote. from the score. Is this possible? is it documented (and I am blind)? or is this impossible? Well not easy to find. In paper-defaults-init.ly, you have some variable controlling Footnotes. By default, the settings are \paper { footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline } footnote-padding = 0.5\mm footnote-footer-padding = 0.5\mm footnote-number-raise = 0.5\mm footnote-numbering-function = #numbered-footnotes reset-footnotes-on-new-page = ##t } If you set : footnote-separator-markup = \markup \null it will do the trick. Gilles Thank you again for this hint which works perfectly. (and BTW looking into this I had the opportunity to understand something new about lily's workings ...) But I have a new question in this context: How can I override the font that is used for footnotes? In the above list there are no helpful options, and I didn't find a responsible layout object that I could override. FootnoteItem seems to be responsible for the reference text in the score, but changes to FootnoteSpanner don't seem to change anything (and I didn't found more information in the IR). So which Engraver does print the footnote text? (Of course I can select a font within the footnote markup itself, but I want to have an override that I can define for the whole score). Any ideas? Would be highly appreciated Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: P.S. controlling footnote separator line
Am 25.04.2012 08:15, schrieb Urs Liska: Am 20.04.2012 10:43, schrieb Gilles: Unfortunately I didn't find the property that controls the line separating the footnote. from the score. Is this possible? is it documented (and I am blind)? or is this impossible? Well not easy to find. In paper-defaults-init.ly, you have some variable controlling Footnotes. By default, the settings are \paper { footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline } footnote-padding = 0.5\mm footnote-footer-padding = 0.5\mm footnote-number-raise = 0.5\mm footnote-numbering-function = #numbered-footnotes reset-footnotes-on-new-page = ##t } If you set : footnote-separator-markup = \markup \null it will do the trick. Gilles Thank you again for this hint which works perfectly. (and BTW looking into this I had the opportunity to understand something new about lily's workings ...) But I have a new question in this context: How can I override the font that is used for footnotes? In the above list there are no helpful options, and I didn't find a responsible layout object that I could override. FootnoteItem seems to be responsible for the reference text in the score, but changes to FootnoteSpanner don't seem to change anything (and I didn't found more information in the IR). So which Engraver does print the footnote text? (Of course I can select a font within the footnote markup itself, but I want to have an override that I can define for the whole score). P.S. And I need to override font-name, not just access something like \italic \huge a.s.o Any ideas? Would be highly appreciated Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: controlling footnote separator line
Am 25.04.2012 08:18, schrieb m...@apollinemike.com: On 25 avr. 2012, at 08:15, Urs Liska wrote: Am 20.04.2012 10:43, schrieb Gilles: Unfortunately I didn't find the property that controls the line separating the footnote. from the score. Is this possible? is it documented (and I am blind)? or is this impossible? Well not easy to find. In paper-defaults-init.ly http://paper-defaults-init.ly, you have some variable controlling Footnotes. By default, the settings are \paper { footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline } footnote-padding = 0.5\mm footnote-footer-padding = 0.5\mm footnote-number-raise = 0.5\mm footnote-numbering-function = #numbered-footnotes reset-footnotes-on-new-page = ##t } If you set : footnote-separator-markup = \markup \null it will do the trick. Gilles Thank you again for this hint which works perfectly. (and BTW looking into this I had the opportunity to understand something new about lily's workings ...) But I have a new question in this context: How can I override the font that is used for footnotes? Footnotes use markups, so you should be able to control the font within the markup: http://lilypond.org/doc/v2.15/Documentation/notation/formatting-text#selecting-font-and-font-size Yes, but as mentioned I want to override it for the whole document, and I didn't find a place where this is possible. Cheers, MS ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: controlling footnote separator line
Am 25.04.2012 08:34, schrieb m...@apollinemike.com: On 25 avr. 2012, at 08:19, Urs Liska wrote: Am 25.04.2012 08:18, schrieb m...@apollinemike.com: On 25 avr. 2012, at 08:15, Urs Liska wrote: Am 20.04.2012 10:43, schrieb Gilles: Unfortunately I didn't find the property that controls the line separating the footnote. from the score. Is this possible? is it documented (and I am blind)? or is this impossible? Well not easy to find. In paper-defaults-init.ly http://paper-defaults-init.ly/, you have some variable controlling Footnotes. By default, the settings are \paper { footnote-separator-markup = \markup \fill-line { \override #'(span-factor . 1/2) \draw-hline } footnote-padding = 0.5\mm footnote-footer-padding = 0.5\mm footnote-number-raise = 0.5\mm footnote-numbering-function = #numbered-footnotes reset-footnotes-on-new-page = ##t } If you set : footnote-separator-markup = \markup \null it will do the trick. Gilles Thank you again for this hint which works perfectly. (and BTW looking into this I had the opportunity to understand something new about lily's workings ...) But I have a new question in this context: How can I override the font that is used for footnotes? Footnotes use markups, so you should be able to control the font within the markup: http://lilypond.org/doc/v2.15/Documentation/notation/formatting-text#selecting-font-and-font-size Yes, but as mentioned I want to override it for the whole document, and I didn't find a place where this is possible. Ah, sorry, missed that bit. You can likely kludge your way through this - basically, you want to write a dummy callback for a property that'll be consulted no matter what (something like Y-extent). This can read the markup stashed in the 'footnote-text property, wrap it in a font override, reset the footnote-text property with the new markup, and then return whatever Y-extent was supposed to return (the default is #f). Cheers, MS OK, I was already afraid it would look something like that. As this is way over my head, I'd rather to it by hand in the current project :-( Or, another idea I missed to mention in my earlier post: I can write a markup function to call from the footnote text. This isn't automatical but of course at least document (or project) wide. Can you tell me how I can override font-name from within a markup function? I only understood how to access properties like \italic (#:italic) etc. Best Urs Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Access font-name in markup functions
Hello community, I didn't find this in the manual: How can I translate \markup { \override #'(font-name . XY) Test } in a markup function? I only found how to translate e.g. \markup \italic Test etc. to #:italic. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Bug concerning acciaccatura and \time?
This is a known issue and explained in the Notation Reference (see Known issues and warnings under grace notes on http://www.lilypond.org/doc/v2.15/Documentation/notation/special-rhythmic-concerns.html) Basically you have to add invisible acciaccaturas of the same length in all staves (and also in possible Dynamics contexts). This is not necessary with all acciaccaturas but only if you experience problems around special barlines (like \time changes or repeats). HTH Urs Am 25.04.2012 19:48, schrieb Thomas Ruedas: Hi, please consider the code snippet below, which is part of a larger piece. It compiles without errors on my machine, but the output is incorrect in that it produces the time signature 1/4 twice in the second bar, namely first correctly at the beginning of the bar but also after the acciaccatura. I have similar passages which are typeset correctly, so I think it may be a bug. Thomas \version 2.14.2 \paper { #(set-paper-size a4) } u = { \change Staff = right \stemDown } U = { \change Staff = right \stemUp } l = { \change Staff = left \stemUp } %%% 3rd movement scoreCGlobal = { \key c \major \numericTimeSignature \time 2/4 } scoreCFlute = \relative c'' { e4\mf ~ e16 fis,\( b c % bar 17 \time 1/4 cis8. d16\) } scoreCRight = { \scoreCGlobal { \relative { c''16\! e,\(\ a ais b8. cis16\) } } \\ { d'' fis''2 } % bar 17 \time 1/4 { f'''8 fis''\! } \\ { gis'' b''4 } } scoreCLeft = { \scoreCGlobal c bes e'2 % bar 17 \time 1/4 \clef treble \acciaccatura fis8 fis fis' b' d''4 } scoreCFlutePart = \new Staff \with { instrumentName = Flöte midiInstrument = flute } \scoreCFlute scoreCPianoPart = \new PianoStaff \with { instrumentName = Klavier } \new Staff = right \with { midiInstrument = acoustic grand } \scoreCRight \new Staff = left \with { midiInstrument = acoustic grand } { \clef bass \scoreCLeft } \score { \scoreCFlutePart \scoreCPianoPart \layout { } \midi { \context { \Score tempoWholesPerMinute = #(ly:make-moment 48 4) } } } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Bug concerning acciaccatura and \time?
Am 26.04.2012 00:26, schrieb Thomas Ruedas: On 25/4/12 9:39 PM, Urs Liska wrote: This is a known issue and explained in the Notation Reference (see Known issues and warnings under grace notes on http://www.lilypond.org/doc/v2.15/Documentation/notation/special-rhythmic-concerns.html) Basically you have to add invisible acciaccaturas of the same length in all staves (and also in possible Dynamics contexts). Yes, that solved it. Thanks a lot! Thomas No problem, I ran into this more than once ;-) In one instance it took me quite some time to notice that there was a Dynamics context running in the background that I only used for displaying performance indications every now and then ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: quotation marks in lyricmode
Thanks to all. Janek's (simplest) solution just did it. When I noticed that hitting doesn't work because it's a special char, I didn't think of the (obvious) fact that the other quotation marks aren't special but ordinary Unicode characters ... So copy and paste worked smoothly :-[ Best Urs Am 26.04.2012 13:25, schrieb Jan-Peter Voigt: This is almost, what I just was about to write ... just another hint: you can also enter any character in a markup with the \char command. The codes are 8222 and 8220. If you want to circumvent \markup \concat { \char #8222 Ich }, you might use a music-function, to wrap syllables in quotes. I have done things like that, if you're interested, I can search for them. Cheers, Jan-Peter On 26.04.2012 13:12, Janek Warchoł wrote: On Thu, Apr 26, 2012 at 12:59 PM, Urs Liskali...@ursliska.de wrote: Any hints possible on how to achieve quotation marks in lyrics? Preferrably the language specific (German) versions. ordinary quotation marks should be preceded with backslashes and included inside external quotation marks: { b } \addlyrics { \quote\ } to have other quotation marks, simply take advantage of Unicode encoding - unicode recognizes several different types of quotation marks and treats them as different characters. The only problem is to get them, since pressing key on the keyboard gives the character, not one of the other quotations. I usually work around this by pasting from a word processor or, for example, wikipedia (http://de.wikipedia.org/wiki/Anf%C3%BChrungszeichen): { b } \addlyrics { „modal“ } (i don't know if the e-mail won't distort the encoding, but when i use the code which i pasted above i get german quotation marks in Lily output) cheers, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Access font-name in markup functions
Hello Jan-Peter, thank you for this information. This is exactly what I needed! Can I find this in the docs? To get a better understanding ... Best Urs Am 25.04.2012 10:37, schrieb Jan-Peter Voigt: Hello Urs, if you are using the current devel version, you can wrap any markup with #{ #} --snip-- \version 2.15.37 #(define-markup-command (nfont layout props arg)(markup?) (interpret-markup layout props #{ \markup { \override #'(font-name . DejaVu Sans) $arg } #})) \markup { \nfont Hallo } --snip-- If you are using pre-2.15 or want to do more fancy things with properties/overrides, you might try this: An override in a markup, modifies the properties for the markup to interpret. So a (cons alist props) can do the same: --snip-- #(define-markup-command (xfont layout props arg)(markup?) (interpret-markup layout (cons '((font-name . DejaVu Sans)) props) arg) ) \markup { \xfont Hallo } --snip-- HTH Cheers, Jan-Peter On 25.04.2012 10:15, Urs Liska wrote: Hello community, I didn't find this in the manual: How can I translate \markup { \override #'(font-name . XY) Test } in a markup function? I only found how to translate e.g. \markup \italic Test etc. to #:italic. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
is shapeSlur broken?
Hi list, the shapeSlur function from the LSR (http://lsr.dsi.unimi.it/LSR/Snippet?id=777) doesn't seem to work anymore (at least for me). That's the 'entrance' function: shapeSlur = #(define-music-function (parser location offsets) (list?) #{ \once \override Slur #'control-points = #(shape-slur $offsets) #}) When calling this function I get the error: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck \once \override Slur #'control-points = # (shape-slur $offsets) then Warnung: Typprüfung für »control-points« gescheitert; Wert »#unspecified« muss vom Typ »list« sein and finally Unbound variable: $offsets From what I see I assume that this is due to some change in syntax at some point (the last time I recall using this function was with 2.14.0). But as you know I'm still quite lost with Scheme, so I can't neither verify nor fix this, and so I'd be gracious for any advice. Of course I can't be sure that this type check at the calling of the 'main' function is all there is to it, but lilyPond doesn't even get to call shape-slur ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Hello Jan-Peter, thank you very much. This seems to solve the problem. Maybe it's not perfectly robust, though. The function now works when the number of lists exactly matches the number of slur fragments. I'm not sure if this has been the case earlier or if it had been a little bit more 'generous'. For the project at hand I can live with that anyway. Best ans many thanks Urs Am 27.04.2012 10:28, schrieb Jan-Peter Voigt: Hello Urs, yes there was a syntax change: you might try shapeSlur = #(define-music-function (parser location offsets)(list?) #{ \once \override Slur #'control-points = $(shape-slur offsets) #}) Variables in musicfunctions now are available by there name without the preceding $. The $-sign now introduces a scheme-expression and returns the result directly ... now here should be more explanation, that I am not able to put in words right now ;-) HTH Cheers, Jan-Peter On 27.04.2012 10:11, Urs Liska wrote: Hi list, the shapeSlur function from the LSR (http://lsr.dsi.unimi.it/LSR/Snippet?id=777) doesn't seem to work anymore (at least for me). That's the 'entrance' function: shapeSlur = #(define-music-function (parser location offsets) (list?) #{ \once \override Slur #'control-points = #(shape-slur $offsets) #}) When calling this function I get the error: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck \once \override Slur #'control-points = # (shape-slur $offsets) then Warnung: Typprüfung für »control-points« gescheitert; Wert »#unspecified« muss vom Typ »list« sein and finally Unbound variable: $offsets From what I see I assume that this is due to some change in syntax at some point (the last time I recall using this function was with 2.14.0). But as you know I'm still quite lost with Scheme, so I can't neither verify nor fix this, and so I'd be gracious for any advice. Of course I can't be sure that this type check at the calling of the 'main' function is all there is to it, but lilyPond doesn't even get to call shape-slur ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Hi David, thank you for now. I'll look into it. But isn't it very likely that I have to reshape a slur anyway when it changes from broken to unbroken? In that case I'd even say the errors are a 'feature' so you notice it ... Provided it is documented enough not to drive you crazy ... Best Urs Am 27.04.2012 15:22, schrieb David Nalesnik: Hi Urs, On Fri, Apr 27, 2012 at 6:51 AM, David Nalesnik david.nales...@gmail.com mailto:david.nales...@gmail.com wrote: Hi Urs, I've rewritten shape-slur so that you should be able to use lists of offsets which don't match with the number of slur fragments. I've tested it somewhat, but if you run into a problem, let me know. I noticed that you'll produce an error if you apply a list of lists to a slur which isn't broken (i.e., if a layout change results in a once-broken slur appearing on a single line). Here is a fix for that: #(define ((shape-slur offsets) grob) (let* ( ;; have we been split? (orig (ly:grob-original grob)) ;; if yes, get the split pieces (our siblings) (siblings (if (ly:grob? orig) (ly:spanner-broken-into orig) '() )) (total-found (length siblings))) (define (helper sibs offs) (if (and (eq? (car sibs) grob) (pair? offs)) ((alter-curve (car offs)) grob) (if (pair? offs) (helper (cdr sibs) (cdr offs)) ((alter-curve '()) grob (if (= total-found 2) (helper siblings offsets) (if (list? (car offsets)) ((alter-curve (car offsets)) grob) ((alter-curve offsets) grob) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Am 27.04.2012 19:30, schrieb David Nalesnik: Hi Urs, On Fri, Apr 27, 2012 at 11:46 AM, Urs Liska li...@ursliska.de mailto:li...@ursliska.de wrote: Hi David, thank you for now. I'll look into it. But isn't it very likely that I have to reshape a slur anyway when it changes from broken to unbroken? In that case I'd even say the errors are a 'feature' so you notice it ... Provided it is documented enough not to drive you crazy ... Sure, that's true. Presumably when you're looking for that fine control, you've settled on the layout in all but the tiny details! it's not only this. I think that with any slur that one might decide to shape manually a change in line break will spoil it anyway. So I'm not so sure it's a useful goal to make such a function fool-proof in this respect. Without the modification, though, the error would cause the file to fail and the error message is a little opaque. (Well, it's quite exact, but it takes some study to figure out how it happened.) Well, the file fails (at least lilypond says so), but it actually compiles, it's only the function that isn't applied. But you're right to assume that the normal user can't cope with the error messages ;-) I could create a warning here, something like: slur is not broken anymore. If that's possible in such functions, I'd find it very useful. Even better: tell the user: The slur has now X parts, please adapt the function call One thing you can do is \shapeSlur #'( ... list of offsets ...) or \shapeSlur #'(( ... list of offsets ...)) without the file failing. Since this function has come up again, I wonder if I could get your (and other people's) opinion on syntax. When I first wrote the offsetting function (http://lsr.dsi.unimi.it/LSR/Item?id=639)I http://lsr.dsi.unimi.it/LSR/Item?id=639%29I thought that alists were a bother to type. But 'control-pojnts _is_ an alist '((x1 . y1) (x2 . y2) ... )) , so shouldn't we have something like this? \shapeSlur #'((dx1 . dy1) (dx2 . dy2) ...) I realize that there's more to type, but wouldn't this be clearer to use? (As well as being more consistent with how LilyPond represents this type of data)? First: I think this is a _very_ useful function that should even be made more widely known. The need to shape slurs is one of the most important issues when it comes to the major problems of a LilPond score. Not because it's a deficit of LilyPond but because it's a very complex topic that needs human intervention in most cases. Second: your syntax suggestion looks very good to me. Of course it is more to type. But that is more than outweighed by the advantages. it's easier to write and it's especially much easier to read. When changing the offsets (which you do multiple times until you get a good result ...) I'm always finding me counting params (in order to find the right item to change) which surely takes more time and concentration than typing (once) a few brackets and points. Third: I suggest to add support for PhrasingSlurs and Ties in order to make it more general. For PhrasingSlurs it's just a matter of writing a new entrance function, but for Ties you need new shape-ties and alter-tie-curve subroutines. See the attached file that is the result of an earlier enquiry on this mailing list. The functions themselves don't incorporate your newest additions (sorry, it's still a bit over my head), but you'll see what I mean. Any thoughts? to sum up what I said: If you'd volunteer to do the following it would be a very valuable contribution to LilyPond's usability ;-) - let the function check the number of arguments and give meaningful warnings instead of errors (count arguments and compare against number of slur siblings) - don't try to make the function robust so that it accepts wrong input. This may be trivial from a programmer's perspective but I can't imagine that it makes sense aesthetically. - add support for phrasingSlurs and ties - make all this visible, at least through an updated snippet in the LSR. Personally I think this should also be in the docs. With best wishes Urs -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user %{ shapeXXX.ily base include file with typographic tweaks modifing the shapes of Bezier curved spanners. Provided by Urs Liska (m...@ursliska.de) Exported functions: - shapeSlur - shapePhrasingSlur - shapeTie This version works also with line broken curves and modifies the shapes of the siblings individually Usage: \shapeXXX (offsets) music offset is a list of eight numbers indicating the x and y offsets for the four control-points of the curve for each part of a broken slur one can give a separate list. An empty list means that the respective slur isn't altered in contrast to overriding the control-points property this function
Re: is shapeSlur broken?
Am 29.04.2012 00:26, schrieb David Nalesnik: Hi Urs, On Fri, Apr 27, 2012 at 6:05 PM, Urs Liska li...@ursliska.de mailto:li...@ursliska.de wrote: Am 27.04.2012 19 tel:27.04.2012%2019:30, schrieb David Nalesnik: Hi Urs, On Fri, Apr 27, 2012 at 11:46 AM, Urs Liska li...@ursliska.de mailto:li...@ursliska.de wrote: Hi David, thank you for now. I'll look into it. But isn't it very likely that I have to reshape a slur anyway when it changes from broken to unbroken? In that case I'd even say the errors are a 'feature' so you notice it ... Provided it is documented enough not to drive you crazy ... Sure, that's true. Presumably when you're looking for that fine control, you've settled on the layout in all but the tiny details! it's not only this. I think that with any slur that one might decide to shape manually a change in line break will spoil it anyway. So I'm not so sure it's a useful goal to make such a function fool-proof in this respect. Without the modification, though, the error would cause the file to fail and the error message is a little opaque. (Well, it's quite exact, but it takes some study to figure out how it happened.) Well, the file fails (at least lilypond says so), but it actually compiles, it's only the function that isn't applied. But you're right to assume that the normal user can't cope with the error messages ;-) I could create a warning here, something like: slur is not broken anymore. If that's possible in such functions, I'd find it very useful. Even better: tell the user: The slur has now X parts, please adapt the function call One thing you can do is \shapeSlur #'( ... list of offsets ...) or \shapeSlur #'(( ... list of offsets ...)) without the file failing. Since this function has come up again, I wonder if I could get your (and other people's) opinion on syntax. When I first wrote the offsetting function (http://lsr.dsi.unimi.it/LSR/Item?id=639)I http://lsr.dsi.unimi.it/LSR/Item?id=639%29I thought that alists were a bother to type. But 'control-pojnts _is_ an alist '((x1 . y1) (x2 . y2) ... )) , so shouldn't we have something like this? \shapeSlur #'((dx1 . dy1) (dx2 . dy2) ...) I realize that there's more to type, but wouldn't this be clearer to use? (As well as being more consistent with how LilyPond represents this type of data)? First: I think this is a _very_ useful function that should even be made more widely known. I'm very glad that you think so! Second: your syntax suggestion looks very good to me. Of course it is more to type. But that is more than outweighed by the advantages. it's easier to write and it's especially much easier to read. When changing the offsets (which you do multiple times until you get a good result ...) I'm always finding me counting params (in order to find the right item to change) which surely takes more time and concentration than typing (once) a few brackets and points. Yes, I also find it very easy to make mistakes when typing in lists separated only by spaces. Trying out examples for the attached file, I was pleasantly surprised at how much easier-- and faster! -- it is to use the alist notation. Certainly, it is easier to read. Plus, I think it makes the offsetting function a bit less ugly. Third: I suggest to add support for PhrasingSlurs and Ties in order to make it more general. For PhrasingSlurs it's just a matter of writing a new entrance function, but for Ties you need new shape-ties and alter-tie-curve subroutines. See the attached file that is the result of an earlier enquiry on this mailing list. The functions themselves don't incorporate your newest additions (sorry, it's still a bit over my head), but you'll see what I mean. One solution is to use a syntax like this: \shapeCurve #Tie #'( ((dx1 . dy1) . . . )) and then to let the functions choose the right control-points callback from a list based on the name of the grob you're overriding. (Dmytro used this in a variant of his adaptation which I saw off-list.) I thought it might be nice to have \shapeSlur, \shapeTie, etc. To avoid duplicating so much code, I pass the relevant 'control-points callback to the functions which need it. Of course, you can extend this list to whatever takes control-points. As you mention, \shapePhrasingSlur would be the same as \shapeSlur. You can do \shapeTupletBracket in 2.14.2, but it looks like 'control-points is gone in 2.15. to sum up what I said: If you'd volunteer to do the following it would be a very valuable contribution to LilyPond's usability ;-) I'd be delighted to do whatever I can. - let the function check the number of arguments and give meaningful warnings instead of errors
parenthesizing only part of an articulation
Hi list, I have something like c2-_ and need to enclose the 'staccato' part of the articulation with parentheses (as this is an editor's addition). Unfortunately I didn't find a way to do this. Also it doesn't seem to work to add the -. and the -- separately. How could I achieve this? Thanks in advance Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: parenthesizing only part of an articulation
Thanks, this works (don't know why I didn't find out myself ...) I had to tweak extra-offset instead of padding, because the tenuto is also misplaced horizontally (maybe it's aligned to the left bracket instead of the staccato). Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Eluze elu...@gmail.com schrieb: hi did you mean something like c2 -\parenthesize -. -\tenuto imo it does not look perdect, but maybe you can tweak the tenuto to keep more distance: c -\parenthesize -. -\tweak #'padding #5 -\tenuto hth Eluze Am 05.05.2012 09:06, schrieb Urs Liska: Hi list, I have something like c2-_ and need to enclose the 'staccato' part of the articulation with parentheses (as this is an editor's addition). Unfortunately I didn't find a way to do this. Also it doesn't seem to work to add the -. and the -- separately. How could I achieve this? Thanks in advance Urs _ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: parenthesizing only part of an articulation
Am 05.05.2012 23:08, schrieb Eluze: Am 05.05.2012 13:22, schrieb Urs Liska: Thanks, this works (don't know why I didn't find out myself ...) I had to tweak extra-offset instead of padding, because the tenuto is also misplaced horizontally (maybe it's aligned to the left bracket instead of the staccato). Best Urs personally I try to avoid extra-offset… at a first glance I also thought the tenuto is not centered correctly - but then I magnified the pdf/png file and it looked much better (maybe an optical illusion due to the inclination of the note head?) - did you try to print the result? how does this look? Well, I know that extra-offset isn't for everyday use ;-) But with -\tweak #'extra-offset #'( 0.35 . 0.4 ) I get the result I have attached - and I think that's just right ... Thanks again Urs Eluze ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user attachment: Centered-tenuto.png___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Pondings
Am 07.05.2012 10:09, schrieb David Kastrup: m...@apollinemike.comm...@apollinemike.com writes: On 7 mai 2012, at 10:02, Francisco Vila wrote: 2012/5/7 Henning Hraban Rammhra...@fiee.net: 2012/5/7 m...@apollinemike.comm...@apollinemike.com: Hey LilyPond users, Just a note to let you know that the Pondings column is now live on lilypond.org! Thank you, but it works only on the English page (i.e. if your browser's first language is set to English). That's because translators still have to update their versions of the front page. The problem I see, on the other hand, is that no matter how many times I refresh the page, I always see only the two English tweets. I just pushed the translations into the code base - they'll take some time to surface on the webpage. Sorry for the misinformation. I repeat my suggestion to use the same pondings on every page, filtered through _all_ of the languages in the browser preferences. The page choice itself is based on the _first_ supported language. And I really stronly suggest, that - in addition to discussing the technical aspects - people think about submitting entries to Mike. I can't imagine that there aren't quite a few 'tweetable' projects out there. And I would consider it a very contraproductive 'statement' if it would remain a list of only two projects ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Pondings
I don't think we should filter out anything below a Bärenreiter publication ;-) The point is to show what Lilypond is good and valuable for. So I'd say (but I'm not responsible for this): Anything that is in some way public (and possibly even linkable) qualifes immediately. Private use may also be useful for this purpose. If you can say: my church choir can sing better from LilyPond scores, it's a perfect advertisment for downloading lilypond, isn't it? And I'd estimate a statement like 'I use LilyPond for my analyzes because I can use style sheets to mark my results' also a valuable contribution. But as mentioned, I'm not responsible for this, so (all out there) get in touch with Mike ... Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Henning Hraban Ramm hra...@fiee.net schrieb: 2012/5/7 Urs Liska li...@ursliska.de: And I really stronly suggest, that - in addition to discussing the technical aspects - people think about submitting entries to Mike. I can't imagine that there aren't quite a few 'tweetable' projects out there. And I would consider it a very contraproductive 'statement' if it would remain a list of only two projects ... Would you tweet about a small LilyPond song score in a church magazine? That’s one of my regular uses, and I consider it too minor. My other main use are song sheets/booklets for my private pleasure, and since they contain mostly copyrighted songs, I can’t publish them, unfortunately. And I guess a lot of other users have similar problems – how much sense makes a tweet about some unspectacular internal use of LilyPond? Greetlings, Hraban _ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
(somewhat OT:) lilypond calling bash script questions
Please excuse if I post a linux question here, but I'd prefer not to have to find a dedicated forum and subscribe there first ... I have a project with more than two dozens of lilypond scores. For several reasons I have them in individual files which I can't \include in a master file. I would like to write a script that allows me to compile all .ly files in one run. For this I need the following which I didn't find through Google: How can I sequentially cd to all subdirectories that start with a number? What I want is to do cd 01_01_... lilypond *.ly cd .. cd 01_02_... .. in a form like for dir in [get me all directories starting with a number] do cd $dir lilypond *.ly cd .. done This _has_ to be absolutely simple, but I didn't manage do find out how so far. Many thanks for any assistance. Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: (somewhat OT:) lilypond calling bash script questions
Am 08.05.2012 11:36, schrieb m...@apollinemike.com: On 8 mai 2012, at 11:31, Urs Liska wrote: Please excuse if I post a linux question here, but I'd prefer not to have to find a dedicated forum and subscribe there first ... I have a project with more than two dozens of lilypond scores. For several reasons I have them in individual files which I can't \include in a master file. I would like to write a script that allows me to compile all .ly files in one run. For this I need the following which I didn't find through Google: How can I sequentially cd to all subdirectories that start with a number? What I want is to do cd 01_01_... lilypond *.ly cd .. cd 01_02_... .. in a form like I only speak Python, but I can help you there import subprocess NUMBER_OF_DIRS = 10 for x in range(NUMBER_OF_DIRS) : subprocess.call(lilypond *.ly, shell=True, cwd=01_+(%.2d % x)+_foobar) Note that I haven't tested the above, so I can't guarantee it works and you'd have to adapt it to your individual case. Cheers, MS Well, I don't speak Python, so I'll hope to get another response. But from what I can decipher from your script I might have to express myself clearer: The condition for the inclusion of a directory is _only_ that it starts with a number. The dirs with scores in it are named according to opus number, thus starting with a two digit number, followed by an underscore and another two digit number. But the unique characteristic is that it begins with a number, as all other directories below the project root start with characters. Thanks anyway Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: (somewhat OT:) lilypond calling bash script questions
Am 08.05.2012 11:46, schrieb Jonas Olson: On 2012-05-08 11:31, Urs Liska wrote: cd 01_01_... lilypond *.ly cd .. cd 01_02_... .. in a form like for dir in [get me all directories starting with a number] do cd $dir lilypond *.ly cd .. done Perhaps like so: for dir in [0-9]*/; do cd $dir lilypond *.ly cd - done Jonas Olson Thank you very much. That's it! ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: (somewhat OT:) lilypond calling bash script questions
Am 08.05.2012 11:46, schrieb Jan Kohnert: Hi, Am 2012-05-08 11:31, schrieb Urs Liska: I would like to write a script that allows me to compile all .ly files in one run. [...] in a form like for dir in [get me all directories starting with a number] do cd $dir lilypond *.ly cd .. done This would be a bash solution: for dir in $(find . -maxdepth 1 -type d -regex ^\.\/[0-9].*$); do cd {dir} lilypond *.ly cd .. done Wow, that's where I had been looking around without success. However, Jonas' and David's solution doesn't look as geeky but works perfectly. Thanks Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Too complicated and time consuming ...
Am 08.05.2012 16:27, schrieb joannesmith: Hello to all. We are in the process of making our own hymn books (we use shape notes). We have about 450 hymns that are in paper format right now (copied, pasted, written on, sloppy, taped, marked, etc.) and I have the job of making them all look nice. A friend suggested lilypond. I appreciate all that lilypond can do, but I find that it is taking a painful amount of time The hymns are not all the same ... and some are really complicated [for me anyway]. The easy ones only take me about 20 minutes or so, however the hard ones can take more than 3 hours and some I have just given up on for now. Multiply that by about 450 songs and it is really intimidating to me. So my question ... maybe there is another program that will better suite my needs?? Or maybe there is someone here that is really good at entering a variety of hymns into lilypond and would be willing to help me every now and then??? But I feel I am too needy ... I might need more help than what someone is willing to give freely and I certainly do not have money to pay anyone!!! Of course I am hoping for a somewhat easier program ... clicking and dragging sounds very appealing to me right now! Does any such program exist? Thank you for your time. I really can understand your situation. It hasn't been too long that I felt similarly - although I must admit (and this may be a big 'although') that I was fascinated from the beginning, not only of LilyPond's quality but also by the implications of the text based approach. If I were you I would seriously consider giving LilyPond a try. I know the learning curve is quite steep for a considerable amount of time. But if you are looking at 450 pieces this is a long way on which you should be able to get quite comfortable with LilyPond along the way. Especially notable (IMHO) is LilyPond's power when you are talking about repetitive things like 450 comparable scores. Of course you will get your first scores faster with a graphical program. But with LilyPond you can for example set up a framework where you will only have to enter the plain music for each new hymn. If this framework is well thought out (OK, this isn't really trivial and may seem impossible for you at the moment), then you have a) a consistent layout throughout all your scores and b) can change any aspect of your layout or style at any moment practically without any hassle and have this reflected in all your scores (for example, besides general style decisions you can switch between completely different layouts or part collections (individual parts, conductor's vs. pocket score etc.) simply through commenting out single lines of code). The LilyPond community won't do the work for you and can't relieve you from learning. But if you are willing to learn and ask the right questions you will surely experience good will and considerable expertise on this list (I can really tell you that :-) ) HTH Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Hi David, thanks for the new 'delivery'. I copied it to my project folder, but it's too late now here to investigate it (has to wait for tomorrow). I'm really looking forward to making all this available in a structured way (although it will surely take some time). Experience working with your function and the new options to visualize the control-points is so beautiful and such a tremenduous improvement in handling LilyPond ... Best Urs Am 09.05.2012 01:49, schrieb David Nalesnik: Hi Urs, Hi David, as promised I tried out your updated function(s). Well, you can't call this a complete test suite, but it seems to work perfectly. Many thanks. Attached is a version showing that it also/still works with phrasingSlurs. I find the warnings very useful. I assume it isn't possible to find out and display the 'real' place in the source where the problem comes from? As it is, I only know that there is a changed curve that doesn't work anymore, but don't know where it is (which can of course be difficult to pin down in larger pieces. If it isn't possible to identify the calling line in the source code, would it be possible to mark the respective curve red? This way one could easily spot the problematic grob. You can do either, or both. The attached file will display a warning which includes the input location and (if you uncomment the relevant lines in shape-curve) print the curves in red. That a wrong number of pairs gives strange results is OK. That way one is gently pointed towards malformed input ;-) +1 So it works like a charm now :-) If you could still add the colour or line number feature - or tell me that you won't or can't do it - I could make a useable and distributably version of the file - maybe as a package together with displayControlPoints (see other mail in the other thread). Sure, please do! In the meantime, I'll keep tinkering with this and I'll send along any improvements. Thank you very much for your comments! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Too complicated and time consuming ...
And you can/should of course put most of such a template in an include file. So you A) don't duplicate code unnecessarily B) can change the setting and have this be reflected through all your scores and C) have nice small files for the actual piece. Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Colin Campbell c...@shaw.ca schrieb: On 12-05-08 08:29 PM, Colin Campbell wrote: snippage Here is a template I modified, and I apologise to the author of the rehearsalMidi function, as I cannot remember where I found it. Discussion of the template is *so* much easier when it is actually present in the reply! \version 2.15.34 \language english \header { title = Generic Gospel Song instrument = Male Quartet composer = Traditional arranger = The Loan copyright =\markup { \char ##x00A9 2012 The Composer } tagline = Engraved with Lilypond } \paper { #(set-paper-size letter) } global = { \key af \major \time 2/2 \tempo 2=96 } tenor = \relative c' { \global % Music follows here. c } lead = \relative c' { \global % Music follows here. c } bari = \relative c { \global % Music follows here. c } bass = \relative c { \global % Music follows here. c } verse = \lyricmode { % Lyrics follow here. } rehearsalMidi = # (define-music-function (parser location name midiInstrument lyrics) (string? string? ly:music?) #{ \unfoldRepeats \new Staff = tenor \new Voice = tenor { s1*0\f \tenor } \new Staff = lead \new Voice = lead { s1*0\f \lead } \new Staff = bari \new Voice = bari { s1*0\f \bari } \new Staff = bass \new Voice = bass { s1*0\f \bass } \context Staff = $name { \set Score.midiMinimumVolume = #0.5 \set Score.midiMaximumVolume = #0.5 \set Score.tempoWholesPerMinute = #(ly:make-moment 96 2) \set Staff.midiMinimumVolume = #0.8 \set Staff.midiMaximumVolume = #1.0 \set Staff.midiInstrument = $midiInstrument } \new Lyrics \with { alignBelowContext = $name } \lyricsto $name $lyrics #}) \score { \new ChoirStaff \new Staff \with { midiInstrument = choir aahs instrumentName = \markup \center-column { Tenor Lead } shortInstrumentName = \markup \center-column { Tenor Lead } } \clef treble_8 \new Voice = tenor { \voiceOne \tenor } \new Voice = lead { \voiceTwo \lead } \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #CENTER } \lyricsto tenor \verse \new Staff \with { midiInstrument = choir aahs instrumentName = \markup \center-column { Bari Bass } shortInstrumentName = \markup \center-column { Bari Bass } } \clef bass \new Voice = bari { \voiceOne \bari } \new Voice = bass { \voiceTwo \bass } \layout { } \midi { } } % Rehearsal MIDI files: \book { \bookOutputSuffix tenor \score { \rehearsalMidi tenor tenor sax \verse \midi { } } } \book { \bookOutputSuffix lead \score { \rehearsalMidi lead tenor sax \verse \midi { } } } \book { \bookOutputSuffix bari \score { \rehearsalMidi bari tenor sax \verse \midi { } } } \book { \bookOutputSuffix bass \score { \rehearsalMidi bass tenor sax \verse \midi { } } } -- I've learned that you shouldn't go through life with a catcher's mitt on both hands. You need to be able to throw something back. -Maya Angelou, poet (1928- ) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Too complicated and time consuming ...
He doesn't even have to copypaste sources. Just save it to an appropriate place and name and include it. Hope the OP is still with us ;-) Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Francisco Vila paconet@gmail.com schrieb: 2012/5/8 Colin Hall colingh...@gmail.com: On Tue, May 08, 2012 at 07:27:11AM -0700, joannesmith wrote: A friend suggested lilypond. I appreciate all that lilypond can do, but I find that it is taking a painful amount of time You might prefer: http://musescore.org/ and I have heard good reports of Noteworthy: http://www.noteworthysoftware.com/ Are these capable of shape notes? I'm not sure. I strongly agree with that David said: _especially_ for 450 hymns, if I were you, I'd go definitely for LilyPond. Dragging sounds might be better only for 1-10 pieces at most, and still you'd have to edit them all once and again when you decide to change the overall look. Instead, learn to use the \include command for paper and layout blocks in LilyPond. An unexpected feature you could discover is, you can teach the basics (just note entry) to people so they save those notes in a text file with a distinct filename. Then you can copy and paste that into your music declarations such as tenor = { } , then use those variables in a template such as \score { \new Staff { \tenor } } Finally, I recommend Frescobaldi for everyday work. Type some notes, hit CTRL+M, done. Errors? hit CTRL+E. Good luck! -- Francisco Vila. Badajoz (Spain) www.paconet.org , www.csmbadajoz.com _ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: (somewhat OT:) lilypond calling bash script questions
Thanks all for the generous feedback. But the very simple solution that Jonas Olson posted quite early solved the issue. for dir in [0-9]*/; was is exactly what I needed. Best Urs Am 09.05.2012 16:31, schrieb Christopher Webster: *From*: David Kastrup *Subject*: Re: (somewhat OT:) lilypond calling bash script questions *Date*: Wed, 09 May 2012 16:01:54 +0200 *User-agent*: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) Christopher Websteraddress@hidden writes: / A variant of Alex's suggestion (below):/ / find . -type d -name [0-9]* -print | while read dir/ / do/ / (/ / cd $dir;/ / for f in *.ly/ / do/ / lilypond $f/ / done/ / )/ / done/ find is looking _recursively_, arbitrarily deep. It is the wrong tool for the job. -- David Kastrup Apologies. My misunderstanding. I thought that recursion was the desired behaviour. If not, then something more like this should do it: for d in [0-9]* do if test -d $d then ( cd $d for f in *.ly do lilypond $f done ) fi done Once again, I've typed this straight into the mail client without testing, so the obvious risks are present. All the best Christopher W. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Hi David, now I tested your new function. OK, I didn't test more than the sources you provided, but I think they give all the necessary combinations. So my conclusion is: This is awesome! I won't ever live without this (as long as LilyPond is concerned) anymore - as long as it won't get broken by new versions. One idea to make it even more comfortable and generic to use would be not to hard-code the color within the function. If one could somehow set the color outside the function one could personalize it to ones needs. As this is kind of a library thing, I think it isn't necessary to make this settable at runtime through the function call. Maybe one could define a variable for the color above the function, setting #black as default. Then anybody can easily see how to adapt it even if she/he doesn't understand the function itself. Ah, I just realized that this way one could still set the color in the music source by redefininge the variable ... I would be happy about this enhancement. But I really have to admit that this is quite low priority because the function is already extremely helpful. Best and thanks again Urs Am 09.05.2012 01:49, schrieb David Nalesnik: Hi Urs, Hi David, as promised I tried out your updated function(s). Well, you can't call this a complete test suite, but it seems to work perfectly. Many thanks. Attached is a version showing that it also/still works with phrasingSlurs. I find the warnings very useful. I assume it isn't possible to find out and display the 'real' place in the source where the problem comes from? As it is, I only know that there is a changed curve that doesn't work anymore, but don't know where it is (which can of course be difficult to pin down in larger pieces. If it isn't possible to identify the calling line in the source code, would it be possible to mark the respective curve red? This way one could easily spot the problematic grob. You can do either, or both. The attached file will display a warning which includes the input location and (if you uncomment the relevant lines in shape-curve) print the curves in red. That a wrong number of pairs gives strange results is OK. That way one is gently pointed towards malformed input ;-) +1 So it works like a charm now :-) If you could still add the colour or line number feature - or tell me that you won't or can't do it - I could make a useable and distributably version of the file - maybe as a package together with displayControlPoints (see other mail in the other thread). Sure, please do! In the meantime, I'll keep tinkering with this and I'll send along any improvements. Thank you very much for your comments! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Hi Jan-Peter, thanks for this. I had already inserted phrasingSlurs into the function, but somehow they slipped through the net during some update ... Best Urs Am 10.05.2012 09:59, schrieb Jan-Peter Voigt: Hello David, hello Urs, thank you very much for these improvements! I have a tiny addition: PhrasingSlurs --snip-- shapePhrasingSlur = #(define-music-function (parser location offsets) (list?) #{ \once \override PhrasingSlur #'control-points = #(shape-curve offsets ly:slur::calc-control-points location) #}) --snip-- Cheers, Jan-Peter On 09.05.2012 18:42, David Nalesnik wrote: Hi Urs, On Wed, May 9, 2012 at 10:13 AM, Urs Liska li...@ursliska.de mailto:li...@ursliska.de wrote: Hi David, now I tested your new function. OK, I didn't test more than the sources you provided, but I think they give all the necessary combinations. So my conclusion is: This is awesome! I won't ever live without this (as long as LilyPond is concerned) anymore - as long as it won't get broken by new versions. Great! I'm very happy to hear this! One idea to make it even more comfortable and generic to use would be not to hard-code the color within the function. If one could somehow set the color outside the function one could personalize it to ones needs. As this is kind of a library thing, I think it isn't necessary to make this settable at runtime through the function call. Maybe one could define a variable for the color above the function, setting #black as default. Then anybody can easily see how to adapt it even if she/he doesn't understand the function itself. Ah, I just realized that this way one could still set the color in the music source by redefininge the variable ... I would be happy about this enhancement. But I really have to admit that this is quite low priority because the function is already extremely helpful. This isn't difficult to do. As you say, you could define a variable for color above the function. All you would need to do then is replace red with the name of the variable in the two places it occurs. In the attached file, I do this and give several ways of specifying the color you want. (Of course, it's the last definition that is actually used.) Best and thanks again Urs You're very welcome! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
function that inserts a toplevel expression
Hi list, I'm sorry that I once more have a basic Scheme question. [ Any suggestion for a reading to find my way into Scheme? I think I have some programming experience (although without any formal IT tuition), mainly from object pascal, but also a little bit with other languages. But when it comes to Scheme I'm absolutely lost. I don't seem to be able to find out even such things as to pass a color to a function ... All these brackets and ticks and #s are so confusing, that it also isn't possible getting somewhere through trial and error. I have read much of LilyPond's Scheme introduction, but it doesn't seem to help me much. So maybe I'd rather read something elsewhere and come back trying to get that together with LilyPond when I'm a little bit familiar with Scheme. ] So now the question: How can I write a function that produces a toplevel expression? I want to be able to write: \debugCurvesOn or #(debug-curves-on) (or something similar) which should then expand to \layout { \context { \Score \override Slur #'stencil = #(display-control-points) \override PhrasingSlur #'stencil = #(display-control-points) \override Tie #'stencil = #(display-control-points) } } (you see where this is going? ;-) ) So far I have realized this with an include file. This works without problems, but calling a function seems - more elegant and - you don't need to remember the path (the function would be included through the general library anyway) Furthermore I will later want to write functions for the \score block, and I will want to pass some parameters in there - which doesn't work with include files. Any help is appreciated Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: function that inserts a toplevel expression
Hi David, thank you for the reply Am 10.05.2012 12:05, schrieb David Kastrup: Urs Liskali...@ursliska.de writes: So now the question: How can I write a function that produces a toplevel expression? No such thing. :-( I want to be able to write: \debugCurvesOn or #(debug-curves-on) (or something similar) which should then expand to \layout { \context { \Score \override Slur #'stencil = #(display-control-points) \override PhrasingSlur #'stencil = #(display-control-points) \override Tie #'stencil = #(display-control-points) } } (you see where this is going? ;-) ) debugCurvesOn = \layout { \context { \Score \override Slur #'stencil = #(display-control-points) \override PhrasingSlur #'stencil = #(display-control-points) \override Tie #'stencil = #(display-control-points) } } That created a layout definition (more accurately: an output definition suitable for use in layouts). Which can be used in \layout: \layout { \debugCurvesOn [Other stuff ...] } OK, instead of \debugCurvesOn I now have to insert \layout { \debutCurvesOn } in my main file. It is not perfectly what I had hoped for, but it's fine nevertheless (definitely better than the current solution). So we may consider this as solved. If you want to turn this into a function, you use define-scheme-function and construct the return value using #{ \layout { ... } #}. Not necessary anymore. But I think I see now better how this works. Furthermore I will later want to write functions for the \score block, and I will want to pass some parameters in there - which doesn't work with include files. Not clear to me what you want. I wanted to be able to write \liedScore Stimme Klavier or \liedScore Voice Piano and get back the respective \score block with the parameters substituted. But from your answers to the other part of the question I now know that this isn't possible. Probably I'll look for a solution through defining a variable and then including the file with the \score definition. For the project at hand it's not necessary because I can have the score block be hardcoded. But I want to distill a more generic library/framework for use after this project. Thanks again Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: function that inserts a toplevel expression
Hello Jan-Peter, thank you for the ideas, that I have partly understood. Am 10.05.2012 13:35, schrieb Jan-Peter Voigt: Hello Urs, On 10.05.2012 12:40, Urs Liska wrote: Hi David, thank you for the reply Am 10.05.2012 12:05, schrieb David Kastrup: Urs Liskali...@ursliska.de writes: So now the question: How can I write a function that produces a toplevel expression? No such thing. :-( an _ugly_ way is to produce a string and then use #(ly:parser-include-string parser topLevelString) This snip can then be included in a music- or scheme-function to be used in lily-syntax. There are cases, where I use this construct, but I try to avoid it. OK, I don't really understand it, but the cleaner \layout { \debugCurvesOn } is perfectly acceptable. ... I wanted to be able to write \liedScore Stimme Klavier or \liedScore Voice Piano and get back the respective \score block with the parameters substituted. you can write liedScore = \score { ... } and you can write liedScore = #(define-scheme-function (parser layout ...)(...) #{ \score { ... } #}) ... thanks to Davids remarkable parser refinements. (I was not amused in the first place, rewriting/updating my scores accordingly, but IMO these changes are a major step forward for lilypond!) If you reference this, it looks all the same \liedScore /optional parms/ So this is what I came up with. This is a minimal example of how it could work: % inside included (library) file: liedScore = \score { \new Staff { \set Staff.instrumentName = \instName \music } } music = \relative c' { c4 e g b } % Defined in another (piece specific) included file instName = Test % already defined with default value in the library, so I don't _have_ to write this \score { \liedScore } But from your answers to the other part of the question I now know that this isn't possible. If liedScore is a music-function (returning void), it can be placed anywhere. This function can do anything possible in scheme: It can add scores or markups to the current stream: --snip-- fun = #(define-music-function (parser location mus)(ly:music?) (add-score parser (list #{ \markup { Hello World } #})) (add-score parser #{ \score { $mus } #}) (make-music 'SequentialMusic 'void #t)) \fun \relative c' { c4 e g b } --snip-- Now you can put anything in your function, to create the score. Unfortunately this doesn't seem to work for me. I don't want to pass the music as parameter but one or more strings containing the instrument names of the staves. But thinking of it the above solution is probably sufficient. I can define default values in the library and override them in the master file if necessary. Probably I'll look for a solution through defining a variable and then including the file with the \score definition. For the project at hand it's not necessary because I can have the score block be hardcoded. But I want to distill a more generic library/framework for use after this project. Using lilypond is handcraft and the artist often wishes to have his own unique tool ;-) I also use my own functions: http://www.xn--schne-noten-tfb.de/?tabs=3,1 http://www.xn--schne-noten-tfb.de/lalily.tgz It is poorly to not documented, but if you are interested, I can give you more information. I'll look into it later Best Urs Cheers, Jan-Peter ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Too complicated and time consuming ...
Am 10.05.2012 16:36, schrieb joannesmith: Thank you all for your private emails ... they have been a great encouragement to me. I will probably end up sticking with Lilypond for all the reasons you mentioned. It really does seem like the best option ... I just need to hang in there long enough to get a good grip on it and be patient with myself. A little more specifics. I first tried to use lilypond on my Linux/Ubuntu system and could not figure it out 'to save my life.' I am still learning Linux, but that's a whole other issue. I ended up loading lilypond on to my Windows system and then, through some internet searching, got Frescobaldi and it seems they work together. LilyPond is a command line program. If you call it it will read the file it is given and then produces the engraved output from it. In principle you can use any text editor to produce the text files that LilyPond uses to do its magic on. But there are editors who are better suited than others. The first thing is syntax highlighting. And the second one are more specific tools that are specialised on LilyPond and that can effectively aid you in working with LilyPond input files. Frescobaldi is one of them. You may want to read http://lilypond.org/easier-editing.html. I'm ignorant as to why really but I do know how to do html and it seems kind of like the same concept in a way? I have a basic template that I am working off of and re-use it each time I start a new one. If I have a hymn that seems like another one, I'll use that other song as a template. Something I found that helps is if I keep notes of songs that are a bit unique. And then if I run into a difficult song, I can look at my notes and see if I've had that 'problem' before. Copying and pasting is good. This is the usual way you start with. And it's exactly this what you will love with LilyPond: it will make it possible to overcome this situation. In an ideal world you'd have a framework of helper and score template files, and you'd chose for any given song which one to use and then the only thing you still have to enter is the plain music . In an ordinary world it usually isn't as nice, but with 450 pieces you have the chance to really go into such a direction. Some have offered to help with questions, encouraged me to post questions here, and also pointed me to a forum that is for lilypond users who use shape notes. THANK YOU!! These are all such excellent resources and I'm sure if I just keep pressing on I'll get better and better. Maybe you could give some examples or explanations about what is characteristic, usual, special or whatever about your hynms. Especially interesting (and good for you to thoroughly think about in advance) are aspects that are common to most or even all of your pieces. You will surely get some hints about what you should take care about or what better to avoid. Thank you again ... I'm so glad I posted this cry for help here! and yes, the replies (at least the numerous ones I saw) _are_ public ;-) Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Dashed Stem
Am I right that you can't make a Stem dashed? I didnt find anything in the IR. What would then be the proper way to attach a dashed line to a note in place of the Stem? Thanks Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: is shapeSlur broken?
Am 11.05.2012 01:27, schrieb David Nalesnik: Hi Harm, On Thu, May 10, 2012 at 6:00 PM, Thomas Morley thomasmorle...@googlemail.com mailto:thomasmorle...@googlemail.com wrote: 2012/5/11 Thomas Morley thomasmorle...@googlemail.com mailto:thomasmorle...@googlemail.com: Hi David, I thought a while about your function. I'd like to suggest some changes. In the attached file you can see: - Elimination of `function' as argument of shape-curve and introducing it as local variable. I like this! I had thought of looking up the callback (as an alternative to passing it in), but hadn't found a way to do it. Nice! - A new condition added in shape-curve at the siblings-variable: ly:spanner? Right--otherwise overriding LaissezVibrerTie won't work. - In the music-function I added a new variable to specify the grob. Aha--I didn't realize you could drop the # in the latest versions. I like this too. Of course, if you want to stick with shapeSlur (and its ilk) you can define it like this: shapeSlur = #(define-music-function (parser location offsets) (list?) #{ \once \override Slur #'control-points = #(shape-curve offsets location) #}) I would prefer this one, although it needs a lot of individual functions be defined. But there should be no problem in defining the shapeXXX set of function parallel to a \shape XXX #'( version). I hope I'll find the way how to update #(display-control-points) (from the other thread on bug-lilypond) so it works with the other curve types too. Best Urs These give the advantage to define only one music-function. Of course there is need to specify which grob should be applied. But now it works for all curves: Slur PhrasingSlur Tie RepeatTie LaissezVibrerTie I didn't test it very widly, but what do you think? I like it all. Oops, forgot to delete the wrong version-number.. Please switch to \version 2.15.36 or higher. I don't have 2.14.2 up to test, but this all should work there provided you add the # before the string? So: \shape #Slur #'( ... Thanks so much! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Dashed Stem
Hi David, Hi Thomas, thank you very much! I'm increasingly fascinated by LilyPond - and this mailing list. And I'll definitely have to learn how to write Scheme functions myself ... With your suggestions I can really solve the problem at hand, so thanks. What I especially like about the new solution is that it automatically uses the original Stem's thickness (so it's independent from overrides. Maybe it would be nice to be able to use this more generally (as a \stemDashed command). But for this it shouldn't have a fixed number of dashes but rather a consistent dash pattern (independent from the Stem's length. Although I don't really understand the function, I assume that the original Stem's length is already used. So it should be quite simple to use this and calculate the dashes from that? I don't expect to be able to apply such complex operations as curve's 'dash-definition. But if one would use two variables that are defined in the function's file one could then redefine them in the music file. But as said, for my actual task I can very well use it as it is and just decide upon the number of dashes manually. Best Urs Am 12.05.2012 04:57, schrieb David Nalesnik: Hi Harm, I suggest the code below. It's very close to your own but it seems to avoid the problems. When I tried your code out, the same problems happened for me! I concluded that this is an issue with the viewer in LilyPondTool, and sure enough, when I view PDF with external PDF-viewer, the problem disappears, and I see all 20 line segments with both your version and mine too. Certain aspects of your rewrite are clearer than mine--thank you! Best, David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Notating same part in two different mixtures of clefs
Am 16.05.2012 09:30, schrieb Christopher Webster: Thank you! Of your three proposed solutions, the one with tags looks like the winner. I didn't know about tags - they look ideally suited. Yes, that's exactly what they are for. A feature of your first solution which I would have hoped to avoid is that you do seem to have duplicated notation - the s1*3 and the s1*2 - in the source. Or did I misunderstand what you were suggesting? Yes, you would have to write out the whole piece for both \voices and apply one or the other. Whether this makes sense, depends a little bit, whether the clef changes necessarily occur at the same places, which I assume they don't. In this case the solution with separate voices provides you with quite fine control. But you have to manage a separate layer that you don't enter directly into the music. And the feature of the third solution which I would have hoped to avoid is that I would need to edit and re-process the input to get the output with the other set of clefs. I was looking for a solution in which one input, processed once, would produce both outputs. No you don't have to edit the ly-file. You can write sth like: music = { ... } myClefI = { \clef tenor } myClefII = { \clef bass \score ... % references \music % and then redefine the variables myClefI = { \clef treble } myClefII = { \clef bass \score ... % references \music If your clef layers are independent (as I assume) you could define four variables trebleClef, altoClef, tenorClef, bassClef and leave two of them empty. music = { % contains all four clefs as references. % If you have e.g. alto and bass clef at the same time you write % \altoClef \bassClef } % define clefs for first score trebleClef = {} altoClef = {} tenorClef = { \clef tenor } bassClef = { \clef bass } \score { \music } % in this score the treble and alto clefs are just ignored %then define the clefs the other way roung % ... \score % now the tenor and bass clefs are ignored. I find this solution looks nicer than with tags, but the functionality is nearly identical. Only if you consider that the cello might also have a treble clef, this one won't work anymore. But this again is no problem when you work with clefs. I have come to find the redefinition of variables a _very_ useful concept. HTH Urs But the tags - they look just right! I'll try those. Many thanks again /Christopher/. On 2012-05-16 09:04, Janek Warcho? wrote: On Wed, May 16, 2012 at 8:53 AM, Christopher Webster christop...@claytonwebster.net wrote: What's the most elegant way in which I can enter the notes just once, but generate two output scores - one with bass and tenor clefs, the other with bass and alto clefs? what about separate voices for clefs? something like: { music } { \clef bass s1*3 \clef alto s1*2 } %{ \clef bass s1*3 \clef tenor s1*2 } you could also try tags http://lilypond.org/doc/v2.14/Documentation/notation/different-editions-from-one-source#using-tags Or simply store the clef in a variable - that's probably the simplest method: myclef = { \clef alto } % or \clef tenor { \clef bass c c \myclef f' f' } hope this helps, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Notating same part in two different mixtures of clefs
Am 16.05.2012 10:30, schrieb Christopher Webster: Yes - just to confirm that the tags were exactly what I needed. Here's the sort of thing I wanted to do: highClef = { \tag #'cello { \clef tenor } \tag #'gamba { \clef alto } } dots = \relative c { \clef bass g'4 a b r \highClef d4 cis d r \clef bass g,1 } \book { \score { \keepWithTag #'gamba \dots } \score { \keepWithTag #'cello \dots } } It works like a charm. Big thank-you from me. /Christopher/. OK. If you run into trouble because you come across clef changes that have to be applied only in one of the instruments (or a treble clef in the cello part), you can still use the tag directly in the music variable (although this is more typing and it doesn't look as smooth). Best Urs On 2012-05-16 09:30, Christopher Webster wrote: Thank you! Of your three proposed solutions, the one with tags looks like the winner. I didn't know about tags - they look ideally suited. A feature of your first solution which I would have hoped to avoid is that you do seem to have duplicated notation - the s1*3 and the s1*2 - in the source. Or did I misunderstand what you were suggesting? And the feature of the third solution which I would have hoped to avoid is that I would need to edit and re-process the input to get the output with the other set of clefs. I was looking for a solution in which one input, processed once, would produce both outputs. But the tags - they look just right! I'll try those. Many thanks again /Christopher/. On 2012-05-16 09:04, Janek Warcho? wrote: On Wed, May 16, 2012 at 8:53 AM, Christopher Webster christop...@claytonwebster.net wrote: What's the most elegant way in which I can enter the notes just once, but generate two output scores - one with bass and tenor clefs, the other with bass and alto clefs? what about separate voices for clefs? something like: { music } { \clef bass s1*3 \clef alto s1*2 } %{ \clef bass s1*3 \clef tenor s1*2 } you could also try tags http://lilypond.org/doc/v2.14/Documentation/notation/different-editions-from-one-source#using-tags Or simply store the clef in a variable - that's probably the simplest method: myclef = { \clef alto } % or \clef tenor { \clef bass c c \myclef f' f' } hope this helps, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Source management tools for lilypond projects
Hi list, I wonder how other people manage their sources in larger lilypond projects. Currently I'm working on a project whose source folders contain ~300 files, most of them LilyPond source files. One thing I really have come to love LilyPond for during this project is the fact that several people can work on the same scores at the same time - a result from the text based input approach. (For example: I (as the 'editor') can apply quick fixes to the musical text directly and don't have to ask the 'engraver' to do this) But then the question of source management arises. For the current project we have the whole file structure in a Dropbox folder. This is practical but also not really adequate - we have to do kind of 'file locks' through email (I'm going to edit this file, please don't touch it until I tell you again) ... It's OK (as we are basically only two guys), but something I'm feeling quite uneasy with. So are there any practical ideas or experiences for a source management for lilypond projects? I have some ideas about but no experience with the usual tools for software development. It would be nice to - have a lilypond project hosted on a central server - at least have mechanisms to checkout/lock files for individual editing - maybe have the ability to diff/merge or something similar. - maybe have the ability to assign 'roles' to different contributors (manage rights to grant rights for specific actions (read, edit, compile ...) or specific files) Ideally it should be possible to have several independent projects within the same file system so that one can implement libraries that are common to all projects. But that's not really necessary. And OTOH the solution shouldn't be too big, i.e. it should be adequate for projects with 'only' 200 or 500 files. Any ideas? Are there other people with the need or practical experience with source management strategies for LilyPond projects? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Get the positions of a beam (or other grob with positions)
Hi, I am very much enjoying now to tweak slurs and other curves using offsets instead of hardcoded control-points. I wonder if it would be interesting to have a similar approach to grobs with a positions property (e.g. beams). While it is comparably easy to find usable #'positions for a beam this is then of course hard-coded and won't work if either the system-system spacing changes for whatever reason, or the music is transposed. Of course it must be quite straightforward to read out lilypond's decision and apply offsets to that in a music function? And if that works one could even enhance the \shape function? The wrapper function could check against a list of grob names and call the appropriate helper function (i.e. if its a Slur then call shape-curve). Maybe it's even possible to make that still more generic. Is it possible to check if a given grob has a given property? (i.e. if the grob has a control-points property then call shape-curve, else if it has positions then call shape-positions [elseif used so that a slurs control-points take precedence over its positions]). So it could be possible to write shape Slur #'((1 . 0) (3 . -2) (0 . 0) (0 . 1)) or shape Beam #'(2 . -1) or shape Arpeggio #'(-1 . 2) Would be awesome I think. Maybe one could even have more ideas to make this offset approach even more general/generic. Instead of ready-made functions, I would also appreciate hints on how to achieve this (as said, I'm quite interested in getting used to write Scheme functions myself, without always having to ask here). Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Am 17.05.2012 12:36, schrieb Christian Andersson: Congratulations for touching upon a hot subject, pretty much like asking people what text editor to use, something that has been debated for decades without any objective conclusion. Personally I tend to prefer git, not only for lilypond score projects, but for anything text-oriented. This is mainly because of its exceptional versatility and likewise exceptional efficiency. First of all, the lock-based approach that you describe to the inherent concurrency of a more-than-one-person project is obsolete since many years, so forget about that. It should not be too much of a problem having two or more persons to edit one file at the same time, the solution is (tool-supported) merge, in which git excels. Git is, by the way, the tool used for source-code control of Lilypond itself, which is indeed larger than the 200-500-file projects that you describe. On the other hand, I personally use git for many 1-3-file projects of mine; it scales very well. Depending on your background in version-control tools, git may not be the simplest of tools to learn quickly. It's not that Google lacks pointers to a lot of documentation, but since git is advanced, many sources can be quite difficult to consume. One of the better books in this regard, which I'd like to recommend, is Pragmatic Version Control Using Git by Travis Swicegood (2008). Thanks for the input. Now, sit down and await all flames from proponents of all the other tools! Bazaar anyone? Or Subversion, CVS, whatever? :-) OK, but please keep in mind everybody that I specifically asked for the use with lilypond projects ... Cheers /Christian ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: translate a pdf file
Am 17.05.2012 13:37, schrieb D'Arcy Cain: On 12-05-17 05:52 AM, fabio wrote: sorry i'm still at beginner level..!i want to know if it's possible to get a ly file from a pdf,if there's any way to translate a pdf file to ly file!thank you! Other than reading it and retyping, no. It's like trying to make eggs from omelets. Not to say it won't ever be possible. Think OCR. In theory that's already possible. There are programs that translate scanned scores to a music format (e.g. Finale or Sibelius). Some of these programs can then export to musicXML which can then be converted to .ly. But that's quite cumbersome - and you're not very likely to get useable results. So most of the time retyping will be faster and better. HTH Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Harvesting comments from music sources
Hi list, any ideas/experience on parsing lilypond input files for special comments and produce some documentation from it? I would love to write editorial comments directly in the lilypond source. Some script could then read these from the source and produce html or OpenDocumentText or some latex input file. What could be a practical approach or language for this? Are there solutions to build upon? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Am 20.05.2012 09:25, schrieb James Harkins: From: Graham Percivalgra...@percival-music.ca On Thu, May 17, 2012 at 12:36:35PM +0200, Christian Andersson wrote: Now, sit down and await all flames from proponents of all the other tools! Saving different versions of files to floppy disks and writing a label in a thick pen was good enough for us in 1986. Especially when we re-used a floppy disk and scratched out the previous version number and wrote a new one on top. Fine until you need to revert to a previous version... From: Federico Brunifedel...@gmail.com Free as Free Software (GPL). SparkleShare is a software, not a hosting service (even though it may become also a hosting service, see sparkleshare.net). You can put your git repository wherever you want: personal server, github, bitbucket (which has unlimited free private repositories at the moment). I'm not familiar at all with SparkleShare. I started using it two days ago to share some files with a person who uses Windows and knows nothing about Git. FWIW, I taught a couple of my students to git pull from here[1] and here[2] in about 5 minutes. Lack of knowledge of git is a minor consideration. Especially if you provide that user with a script to do this: git stash save git pull --rebase git stash pop Thanks, this is the answer to one question I had about the suggestions: Would it be achievable to use a git repository with collaborators who first have to learn this from scratch. _I_ could/can take some effort to learn git to set up and manage a repo, but I couldn't expect prospective contributors to do this. :-) Best Urs hjh [1] https://github.com/jamshark70/hadron [2] https://github.com/jamshark70/workshop2012 -- 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 ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: suppress warnings
Am 20.05.2012 21:12, schrieb Graham Percival: On Sun, May 20, 2012 at 05:01:40PM +0200, Peter O'Doherty wrote: Is it possible to suppress specific (expected) warnings? No, unfortunately. - Graham ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user The only warning you can deliberately suppress is that about too many clashing note columns (for example: ignoreCollision = \once \override NoteColumn #'ignore-collision = ##t). But that's probably not exactly what you wanted to read. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
BeatStructure in 4/4 time
I'm stuck :-( Why doesn't this work as I expect? . \version 2.15.36 \time 4/4 \set Timing. BeatStructure = #'(1 1 1 1) c8 c c c c c c c This should result in four groups of two beamed notes, isn't it? But I always get two groups of four notes. The same problem with 3/4, but with 5/4 I can do any combination without problems. Any ideas? Thanks Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BeatStructure in 4/4 time
Thanks, that was it. OK, it# in the docs, but I had to re-read it three times until I got it :-( Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Janek Warchoł janek.lilyp...@gmail.com schrieb: On Mon, May 21, 2012 at 3:56 PM, Urs Liska li...@ursliska.de wrote: I'm stuck :-( Why doesn't this work as I expect? . \version 2.15.36 \time 4/4 \set Timing. BeatStructure = #'(1 1 1 1) c8 c c c c c c c you have to clear BeamExceptions if i remember correctly. HTH, Janek ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Dear Susan, thank you for the valuable input. What you describe is basically what I thought how it works - but didn't know for sure due to lack of experience. Especially the aspect of branching is interesting, as I didn't really have an idea about that. So what you describe as the intention of your post is exactly what I needed ;-) In the meantime I had already decided to go this way for the next projects. Our current project that we organize with a shared Dropbox folder starts to become more and more complicated with regards to keeping everything in sync (although it is _far_ better than having independent copies of the folder structure and exchanging everything by email (not to speak about Floppy Disks, which would of course take way too long to be always sent from Germany to Poland and back ;-) ) Best Urs Am 21.05.2012 11:56, schrieb Susan Dittmar: Dear Urs, I just have one thing to add to the discussion: *do* use one of the repository tools! No matter which one (you had some suggestions already), but do use one! I do so since about 10 years (csv originally, converted to subversion some -- more than 6, I think -- years ago), and even for personal projects on only one computer I would not want to go without that any more. Now it's just a question whether I did check in often enough to restore what I need restored, not how or whether to do it. And as soon as I work on two computers (laptop and destop for example), it's a must have. One thing you will have to think about is check-in policy though. I personally like to check in very often, but that means the checked in version might not compile, let alone be in a state acceptable to use. I guess for truely collaborative work you will want to reduce official check-ins to working versions. This can be combined with my check in often wish by using branches: Work in your personal branch (and check in there as often as you want) until you are content with the results, and when an acceptable state of your work has been reached (compiles fine, and conforms to all the criterions you defined for an official checkin), merge your changes back to the main branch. To reduce problems with branch merging (adding changes of the main branch to the work branch when someone else did a change), my next step would be to forget about that work branch after having merged into the main branch, and start a new branch for the next set of changes. Most newer repository systems allow for a virtually endless number of branches. Maybe you know all that already :-). I just thought to describe this strategy to you as a starting point for investigation, adding some of the technical terms to help you getting used to them. Hope it helps and not just annoys, Susan ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Am 22.05.2012 00:53, schrieb Colin Hall: Hi Urs, In addition to version control your team may need the concept of a build token. The person holding the token has the right to merge in their latest work and, in so doing, break the project. They also have the responsibility to leave it in a working state before releasing the token for the next person. Leaving it in a working state can mean reverting to the previous working version, something that is easy if you have version control in place. This discipline is particularly valuable as you approach a release date. Cheers, Colin. On Mon, May 21, 2012 at 11:13:54PM +0200, Urs Liska wrote: Dear Susan, thank you for the valuable input. What you describe is basically what I thought how it works - but didn't know for sure due to lack of experience. Especially the aspect of branching is interesting, as I didn't really have an idea about that. So what you describe as the intention of your post is exactly what I needed ;-) In the meantime I had already decided to go this way for the next projects. Our current project that we organize with a shared Dropbox folder starts to become more and more complicated with regards to keeping everything in sync (although it is _far_ better than having independent copies of the folder structure and exchanging everything by email (not to speak about Floppy Disks, which would of course take way too long to be always sent from Germany to Poland and back ;-) ) Best Urs Am 21.05.2012 11:56, schrieb Susan Dittmar: Dear Urs, I just have one thing to add to the discussion: *do* use one of the repository tools! No matter which one (you had some suggestions already), but do use one! I do so since about 10 years (csv originally, converted to subversion some -- more than 6, I think -- years ago), and even for personal projects on only one computer I would not want to go without that any more. Now it's just a question whether I did check in often enough to restore what I need restored, not how or whether to do it. And as soon as I work on two computers (laptop and destop for example), it's a must have. One thing you will have to think about is check-in policy though. I personally like to check in very often, but that means the checked in version might not compile, let alone be in a state acceptable to use. I guess for truely collaborative work you will want to reduce official check-ins to working versions. This can be combined with my check in often wish by using branches: Work in your personal branch (and check in there as often as you want) until you are content with the results, and when an acceptable state of your work has been reached (compiles fine, and conforms to all the criterions you defined for an official checkin), merge your changes back to the main branch. To reduce problems with branch merging (adding changes of the main branch to the work branch when someone else did a change), my next step would be to forget about that work branch after having merged into the main branch, and start a new branch for the next set of changes. Most newer repository systems allow for a virtually endless number of branches. Maybe you know all that already :-). I just thought to describe this strategy to you as a starting point for investigation, adding some of the technical terms to help you getting used to them. Hope it helps and not just annoys, Susan ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Hi Colin, I'm afraid I didn't completely get this. Does that 'token' mean that only one person at a time is allowed to merge their changes to the repository, while the others have to wait for their turn? But isn't that similar to having a file lock strategy? I'd be grateful for some more hints/explanations. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Dear Susan, I think this makes sense (although I can't tell if it really is what Colin wanted to express ...). Do I understand correctly that what you describe is one possible strategy to take care of the integrity of the main source tree? And another one would be what I have the impression is going on with LilyPond development: Every contributor can commit updates, but they are only merged to the main or master tree after some kind of review process? What I'm feeling slightly uneasy about with your suggestion is that it relies on some kind of 'lock' state. Nobody except the owner of the build token is allowed to update the master branch. This is only acceptable if it is somehow enforced by the system and doesn't rely on the reliability of the people involved. And I feel this may lock up things if someone doesn't give back the token fast enough? Best Urs Am 22.05.2012 10:04, schrieb Susan Dittmar: Dear Urs, I think what Colin meant by build token is another strategy to archieve the same as what I described with checkin/merge to the main branch and personal development branches. I think he has in mind a decentralized version control tool, where you first work with your local version, commiting changes to this local version (as I, using subversion/SVN, would have done with a personal branch). Then, when he has the build token, he first updates his local version with the official changes, debugs his changes until they are in a working state, and then publishes his changes. He makes sure that the published version is up to standard, so no coworker has to debug his stuff. In case he finds his changes make bigger fuss than he thought, he can always give back the build token without making any of his changes public (that means he reverts to the previous working thing). Then he does local work again, and when he trusts this time he will be able to make everything work, he again acquires the build token to make them public. So, if I understand him correctly, the strategy is the same, just the technology used and their abilities differ. Hope that helps, Susan ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Hi Colin, thanks for your patience. I somehow start to see some light ;-) Am 22.05.2012 10:53, schrieb Colin Hall: On Tue, May 22, 2012 at 10:26:02AM +0200, Urs Liska wrote: Dear Susan, I think this makes sense (although I can't tell if it really is what Colin wanted to express ...). It was pretty close. Thanks, Susan, you write well. Do I understand correctly that what you describe is one possible strategy to take care of the integrity of the main source tree? Yes. Integrity in the sense that it passes (I'm guessing) these three tests: no errors from Lilypond, the scores look good, and the midi sounds fine. Or anything else one agrees upon (for example, we don't care about midi in this case) And another one would be what I have the impression is going on with LilyPond development: Every contributor can commit updates, but they are only merged to the main or master tree after some kind of review process? Yes. What I'm feeling slightly uneasy about with your suggestion is that it relies on some kind of 'lock' state. Nobody except the owner of the build token is allowed to update the master branch. Yes, that's right. They are responsible for moving the head of the master branch forward. This is only acceptable if it is somehow enforced by the system and doesn't rely on the reliability of the people involved. You have to be able to rely on your team. But it should be quite easy to implement mechanisms that enforce this (basically similar to lockfiles) And I feel this may lock up things if someone doesn't give back the token fast enough? Yes. Susan's point about small commits and often is very important, and more so as your project approaches a release date. Traditionally, in a shared office, people use a rubber chicken or a ball. You throw it to each other. :-) In distributed teams subject-only emails work well e.g. From: Urs Subj: I'm taking the build token (Urs integrates new spacer rest layout) From: Urs Subj: Build token free. (Rest of team do a git fetch or something like that) From: Susan Subj: Taking the build token (Susan integrates new coda section) etc etc Or maybe an empty file in some directory. If the directory is empty I do touch token_Urs After doing changes I remove the file. Maybe also possible with more fine-grained control in subdirectories (in the current projects we have a book with 26 individual scores. So it's only necessary to 'lock' one score at the same time, not the whole project. What probably wouldn't work this way to have even more finegrained control. For example if a) is working on the polyphony in the piano right hand file b) can without problems proof-read the lyrics in another file of the same score. If we'd use the 'build token' concept (be it through empty emails or 'lock files') then we're basically where we are right now (with a shared folder): tell the others which file I'm going to edit and ask them to leave this alone for a while. I hope there are tools that address this situations with some 'smart merge' strategies ... Best Urs Cheers, Colin. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
\shape can crash Lilypond
Hi David N, Recently we experienced strange crashes in our Lilypond scores that could only be avoided by randomly changing the order of some function calls. Now I sat down and pinned it down quite narrowly: If I use your wonderful \shape function and afterwards override any property of the same grob it causes Lilypond to crash while 'creating systems'. Attached you'll find a file with detailed observations. My impression is that your function somehow messes up with the grob's variable/pointer or whatever, making a copy and not telling Lilypond or such kind of thing. Anyone an idea what could be wrong here? It doesn't make the function unusable (not at all), but it can cause very dubious errors that might be very hard to track (depending on the situation). Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. shapeCanCrash.ly Description: ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \shape can crash Lilypond
Thank you very much! Seems to work perfectly (so far - until we find something new ;-) ) Best Urs Am 22.05.2012 17:28, schrieb David Nalesnik: Hi again, The problem happens when the variable function attempts to look up the procedure for 'control-points. Each override you do is tacked onto the front of the alist and so the key we're looking for-- 'control-points -- is pushed further back. You can see what I mean by changing cdr in the assignment for function (line 20?) to cddr for one override, cdddr for two overrides... This will fix the problem--provided the overrides come after \shape ... (The reason why cdr is used in the first place is that the current override of 'control-points would be there at the head of the list, and you'd get calculation-in-progress instead of ly:slur::calc-control-points or whatever.) I'll think about how to fix this and get back to you. Thank you for noticing this!! OK, the solution is pretty straightforward: simply replace (function (assoc-get 'control-points (cdr (ly:grob-basic-properties grob with (function (assoc-get 'control-points (reverse (ly:grob-basic-properties grob Crisis averted! :) -David ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Dear Susan, thank you very much for taking so much of your valuable time. It's astonishing - like reading a good book, but one written with my specific questions in mind :-) Well basically everything really is very much what I had expected it to be. What I will have to see in action before really being able to believe it works in 'real life' is the merging of text files that have been changed by more than one person. Of course it's clear that it _must_ work (everything what I might have in mind with such a system is of magnitudes smaller than any average software project). But it's just hard to imagine ;-) Best Urs Am 22.05.2012 12:22, schrieb Susan Dittmar: If we'd use the 'build token' concept (be it through empty emails or 'lock files') then we're basically where we are right now (with a shared folder): tell the others which file I'm going to edit and ask them to leave this alone for a while. It looks similar, but there are big differences! You do not tell them to leave the file alone, just to not finalize their changes with this file yet. Every one can continue to work on his part of the things even when another does wear the master head at that moment. What you are telling by locking is not do not touch, but do not update from that and thus do not finalize. Let me try to explain. Let's say, A and B are both working on one file. A works on the lyrics, B works on the polyphony (just let's assume both are in the same file). In his local copy, A can make as many changes as he wants, and all is fine. In his local branch, he can even do as many checkins as he wants, still all is fine. At the same time, B an do as many changes to *the same* file locally as she wants. In her local branch, she can do as many checkins as she wants, too. Now A thinks all is fine with the lyrics. He now tells the group I will do an official checkin to the file now. From now on, *the main branch of the file* is his to work on. He tells the repository program to merge his local changes to the main stuff. As the main stuff is still the same as when he created his local branch, all should work well. He does the necessary consistency checks (like compiles and looks well), does (if necessary) a final checkin to the main branch, then tells the group file is free again. Remember, B was working on the same file. Even while A does his release and locks the file, B gladly continues her work on the polyphony (and thus on the very file A did lock!). Now, some time later, B finally is content with the results and could check them in. First she checks whether someone is holding a lock over the file. As A already did his final commit, none does, so B can continue. She tells the group (more on that later) that now she is wearing the master hat for that file. Next she tells the repository software to update *her local copy* with the changes commited to the main trunk in the time between her checkout (the moment she started to work on the file) and now. This is the crucial point in which repository programs are such a help: A and B did simultaneously *work* on the same file, and just the *checkin* needs to be one after the other! As A did change the file, the update will change B's copy. Usually, those changes can be done by the repository software without problems. But if A's changes and B's changes are too close together (like in the same line), the software cannot tell which change will have to be kept, and will now ask B about that. After these clashes are solved, B has to do all the consistency checks again. All was well with her changes before she did the update, but maybe now she has do add some tweaks again. B goes on making sure the file becomes consistent with policy (compiles, looks well, ...) again. Then B makes her final checkin, and gives back this file's rubber chicken for the next one to grab. How this rubber chicken mechanism is implemented depends on your group, your requirements (what needs to work after a checkin?), and the software you use. My approach with the branches would allow you to leave all the locking and communication to the software. You create your branch at the moment you start to work on a file, work within that branch until you think all is well, update this branch from the main trunk to incorporate other's changes, check integrity again (repeat update/check until there's only very short time since last update), then commit your changes to the main trunk, check consistency again to make sure (and correct immediately if needed), and then forget about the branch afterwards. Only the time between your committing to the main trunk and the moment you are sure consistency is still obtained is time where others cannot be asured a newly checked out version will work fine. This is the only time you might want to 'lock' a file or even the whole thing. For all this, no direct communication is necessary, just the discipline to only make checkins to the main branch only when they do not
Re: How to catch the current height of a StaffGroup?
No idea about Scheme, but shouldn't a standard barline have the desired length by default? Best Urs Am 23.05.2012 18:57, schrieb Thomas Morley: Hi, I'm trying to read out the current height of a StaffGroup, i.e. from the bottom-line of the bottom-staff up to the top-line of the top-staff. As a test I created a new BreathingSign-stencil drawing a line from top-line to bottom-line. The value for draw-line is figured out manually for now. Of course I want to automate this. \version 2.15.38 #(define ((staff-group-height number) grob) (let* ((stil (ly:text-interface::print grob)) (par1 (ly:grob-parent grob Y)) ;; #Grob VerticalAxisGroup (par2 (ly:grob-parent par1 Y)) ;; #Grob VerticalAlignment (par3 (ly:grob-parent par2 Y)) ;; #Grob System ) ;(newline)(display par1 )(display par1) (ly:grob-set-property! grob 'stencil (grob-interpret-markup grob (make-line-markup (list (make-with-dimensions-markup '(0 . 0) '(0 . 0) (make-with-color-markup blue (make-draw-line-markup (cons 0 number)) %- Test one = { \relative c' { a2 b \override Score.BreathingSign #'after-line-breaking = #(staff-group-height -13) c\breathe d \break a,, b'' \override Score.BreathingSign #'after-line-breaking = #(staff-group-height -22.5) c\breathe d } } two = { \relative c { \clef bass a2 b c d a'' b,, c d } } \score { \new StaffGroup \new Staff \one \new Staff \two } I don't know which grob/item/stencil I should adress to catch the needed value and how. Any hint would be appreciated. Thanks, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Source management tools for lilypond projects
Am 24.05.2012 10:57, schrieb Colin Hall: On Thu, May 24, 2012 at 01:24:11PM +0800, James Harkins wrote: Not sure if this was already discussed (I've been following the thread somewhat loosely), but it seems to me that git makes it a whole lot easier to handle a build token by virtue of the repositories being decentralized. Yes, it does, especially if there are clear boundaries between the responsibilities of the contributors. This seems to be the case for Urs, and probably a lot of lilypond projects, and my introduction of the build token idea was not a useful contribution. Sorry for that. Git is really awesome. Agreed. How about Urs, Susan, you and I collaborating on a one-page score via github as a way of confirming our understanding, and demonstrating how it can be done? Even a few staves would be enough to confirm a suitable workflow. Keep it very simple. Something that any of us could write in thirty minutes, say, on our own, but share the work via git. Cheers, Colin. Hi all, I was just busy writing to express my gratitude for all this input. By now I think I have acquired enough information to be contented. So while still being interested in reading anything more, I'd say nobody _needs_ to give more of his/her time. I have for some time now being decided to go for working with git. But I won't make any experiments with our current project. This project triggered my thinking about this subject - but as we're rapidly approach the publication date, and we're in this case only two people having to keep the integrity of the project, it will work the way we started. And it's way too late to try out fundamental changes ... I have a project in mind which will become my first bigger experience with a git repository: an open library with many tools and concepts we developed during the project (including quite some very clever coding we profited from on this list and bug-lilypond). But I will only start to think of it when the current project is ready. And now to your idea, Colin: I find this is a very good idea. For me personally this would be an opportunity to make sure I'm already on the right track when starting the library project. And to get feedback and discussion on the way. I would suggest documenting such an experiment, so it will become useful for others. And I suggest to set the ground 'privately' (say: we four) and then open it up for others from the list so we have more contributors and thus more 'potential' of collisions. I suggest that I will come back to you privately when our current edition is finished. I would then setup a free github account, and we would start thinking about what to do concretely. If anyone wants to start right now, then of course: do. But I probably won't be very active until mid/end June. And (I stated already, but maybe I should repeat this here: I don't have any practical experience with versioning systems (although I'm surely 'techy' enough to get it quickly ...)) This experiment could well also serve as a pre-test for a larger idea that I have in mind (maybe for 2013): I would like to do a 'public experiment' on how fast and efficient we can collaboratively produce a large score - thanks to the text based approach. I'd like to do this as a proof-of-concept project to promote some of LilyPond's qualities to a wider target group ... Imagine a large symponic movement (or possibly something oratoric) from the end of the 19th century (so it's in the public domain) of 10 minutes. If we'd have 20 contributors, each dealing with one or two parts, it should grow very speedily, documented through daily builds. Maybe we could even find something that we can produce as a first edition, which would give us quite some attention in the scholarly world of music edition (furthermore: this _could_ generate money for the development of Lilypond - provided one agrees upon not to give the result to the public domain. One could for example make a score freely available but keep the performance rights (an editor of a first edition can hold the performance rights for 25 years, the royalties are similar to those of the copyright of a composer). But that's nothing do discuss already now ... ). [ This is one of my goals on a grander scale: convince as many editors as possible of LilyPond's qualities and potential (therefore the mentioned library also stresses concepts in that direction (support of editorial annotations, in-source communication or -documentation. And I have some more ideas that can't be quickly hacked but might hopefully be realized in the future: Support for pdf layers, a script that extracts 'critical comments' from the sources ...)). If responsible editors, say of Critical Editions start getting convinced of LilyPond, it may increase the pressure on the publishers to slowly tolerate the use of LilyPond. I won't say I have influence in this area, but I will definitely do some lobbying with a few
Re: Beaming regression 2.15.39 compared to 2.14.2
Am 24.05.2012 11:57, schrieb Toine Schreurs: On Thu, May 24, 2012 at 05:13:55PM +1000, Nick Payne wrote: In 2.14.2, the output for the second bar beams all five eighth notes together, as I would expect. In 2.15.39, the first eighth note is not beamed with the others: \relative c'' { \time 3/4 c8 c c c c c r c c c c c } It apparently is different from 2.14.2, but I would not call this a regression. In 3/4, I would like to have 6 eights beamed together, but if any rests are involved, the beaming should be per quarter in order to preserve the 3-beat character. In: \relative c'' { \time 3/4 r4 r8 c c c } the default beaming in 2.14.2 gives an impression of a 2-beat, which should be avoided. Toine Schreurs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Just one comment, a question that I had several times when reading such reports. Don't know if this applies here, but: A regression is something that doesn't work in a later version and that has _deliberately_ worked in a previous version. I.e. something that has once been fixed to work in that specific way. If it just was correct and isn't anymore, it isn't considered a regression but just a newly introduced bug. Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Beaming regression 2.15.39 compared to 2.14.2
Am 24.05.2012 14:14, schrieb Nick Payne: On 24/05/12 21:19, m...@apollinemike.com wrote: On 24 mai 2012, at 12:04, Urs Liska wrote: Am 24.05.2012 11:57, schrieb Toine Schreurs: On Thu, May 24, 2012 at 05:13:55PM +1000, Nick Payne wrote: In 2.14.2, the output for the second bar beams all five eighth notes together, as I would expect. In 2.15.39, the first eighth note is not beamed with the others: \relative c'' { \time 3/4 c8 c c c c c r c c c c c } It apparently is different from 2.14.2, but I would not call this a regression. In 3/4, I would like to have 6 eights beamed together, but if any rests are involved, the beaming should be per quarter in order to preserve the 3-beat character. In: \relative c'' { \time 3/4 r4 r8 c c c } the default beaming in 2.14.2 gives an impression of a 2-beat, which should be avoided. Toine Schreurs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Just one comment, a question that I had several times when reading such reports. Don't know if this applies here, but: A regression is something that doesn't work in a later version and that has _deliberately_ worked in a previous version. I.e. something that has once been fixed to work in that specific way. If it just was correct and isn't anymore, it isn't considered a regression but just a newly introduced bug. Best Urs Still a regression. Any change in behavior that is not fully accounted for in the change log and that you feel leads to worse behavior than a previous version is a regression. People can then either report it as a change, at which point it is a feature, or they can fix it, at which point the old functionality is restored. Reverting to the previous behaviour is simply a matter of \set beamExceptions = #'((end . (((1 . 8) . (6) Nick ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Well, not having followed this too closely: I have the impression that you experience an effect or side effect of the heavily changed beaming. It this is the case, could you please check if this is documented? Maybe you overlooked something. Or maybe there's need for a documentations suggestion? Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: ly2video - create videos from your LilyPond projects
This is great! one question: How did you manage to create that endless, one-system layout? Best Urs Am 23.05.2012 20:15, schrieb FireTight: Hello, my name is Jiri FireTight Szabo and I would like to introduce program ly2video to you. This program can generate videos from your LilyPond projects that contains moving music staff, which is synchronized to music ( http://www.youtube.com/playlist?list=PL444F0513202699C4feature=view_all examples ). If you are interested, you can download it http://code.google.com/p/ly2video/downloads/detail?name=ly2video_v1.0.zip here . I hope you will enjoy it! :) What do you need to use ly2video? - Python 2.7 - GNU LilyPond 2.14.2 - FFmpeg - TiMidity++ How to use it: Just call ly2video.py [options] from command line. Options: -h, --help: show help message and exit -i FILE, --input=FILE: input LilyPond project -o FILE, --output=FILE: name of output video (e.g. myNotes.avi, default is input + .avi) -c COLOR, --color=COLOR: name of color of middle bar (default is red) -f FPS, --fps=FPS: frame rate of final video (default is 30) -r HEIGHT, --resolution=HEIGHT: resolution of final video (options: 360, 720, 1080, default is 720) --title-at-start: adds title screen at the start of video (with name of song and its author) --title-delay=SECONDS: time to display the title screen (default is 3 seconds) --windows-ffmpeg=PATH: (for Windows users) folder with ffpeg.exe (e.g. C:\ffmpeg\bin\) --windows-timidity=PATH: (for Windows users) folder with timidity.exe (e.g. C:\timidity\) Known issues: - music written with \partial command can cause a lot of bugs - commands like \override Stem #'stroke-style = #grace skip notes - videos created with title screen can have some bitrate issues ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Video recording of LilyPond talk at Chemnitz
Hi Janek, better don't talk too much about these things. They give me an attention I don't deserve yet. OK, I have plans to 'tweak' several projects to be explicit promotion for LilyPond. OK, I'm determined to do some heavy lobbying in an area that _could_ result in a significant boost of LilyPond's public attention. But: a) Nobody can tell right now if I will be able to realize these projects at all or at the desired level. b) Nobody can tell what impact they would have in the end. Usually the final outcome of such pipe dreams is much smaller than hoped. I wouldn't count on becoming one of the lucky few who initiate a chain reaction. Best Urs Am 24.05.2012 20:36, schrieb Janek Warchoł: On Thu, May 24, 2012 at 8:23 PM, Tim Robertst...@probo.com wrote: Janek Warchoł wrote: ... Urs Liska has plans for making music publishers aware of these advantages - see last messages from Source management tools for lilypond projects thread: http://lists.gnu.org/archive/html/lilypond-user/2012-05/msg00561.html ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: How to cancel voice so ties are right direction
Write ^ or _ before the tilde to force the tie up or down. Works also with articulations, slurs and many other things. Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. Jeff Barnes jbarnes...@yahoo.com schrieb: This snippet illustrates a problem I'm having. The tie on the g is in the wrong direction after I've finished with the voice split. How do I get the correct tie direction? It looks like the \voices are still in scope wrt ties. Also, why did I lose the \relative c' after the voice split? \score { \new Staff { \relative c' { \voiceOne g'2 } \\ { \voiceTwo c,2 } g' c'4 ~ g' b } \layout { } } _ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: how to enter notes quickly (midi keyboard available)
Am 26.05.2012 18:46, schrieb David Kastrup: Andrew Hawrylukahawry...@gmail.com writes: Maybe someday the computer will be able to see or hear the music in my head and type it out ... no, scratch that. Mind-reading computers doesn't sounds like a good idea at all: we're trying to keep the humans in charge of this place, after all! I have no problems with mind-reading fingers. They leave me perfectly well in charge. In fact, more so than I would be without them. It would be more worrisome if we had mind-writing computers. :-) ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: musescore lands sponsoring?
We'll think about this (and some more, when I'm back and we're ready with our current job ...). OK, Janek? Best Urs Janek Warchoł janek.lilyp...@gmail.com schrieb: On Wed, May 30, 2012 at 5:31 PM, David Kastrup d...@gnu.org wrote: There are also a few advantages [of using MuseScore]: a) MusicXML export means the results are usable in a variety of notation programs making use of an open standard. Indeed, having MusicXML exprort can give Lily more popularity. b) volunteers can be given a complete toolchain. You can use an editor of your choice is about as helpful for the average musician as You can use a lathe of your choice. LOL :D how true! Valentin, that could be the next quote of the month :) d) I am well-versed in LilyPond. What form do you want the entry in? Can I use music functions? What note language should I be using? Should the voicing be reflected in ad-hoc voices? Should I be using anonymous parallel voices? What kind of context mods should I be using? Uh, we better form a committee for that kind of question. Good point. That's why our KickStarter project (at least the first one) should be a not-very-long piece for chamber orchestra. Or string quartet. Something with 3-6 staves and 5-15 pages. cheers, Janek PS there actually is one serious advantage of text input in a project like this: we could set up a git repository for it. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Visibility of text spanners after line break
Hi listers, How can I suppress the repetition of a TextSpanner's left text after a line break? I want the dashed line to continue, but without the text being repeated. I didn't find anything in the NR, and there is only one snippet, but that refers to spanners that end immediately after the line break. Any ideas? Best Urs -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: forcing two pages
These are the \paper variables you need to try around with: system-count = 8 % total number of systems in the score page-count = 2 % number of pages in the score max-systems-per-page = 4 min-systems-per-page = 4 % if max/min are equal it's basically a hardcoded command ragged-bottom = ##f % fill pages fully ragged-last-bottom = ##f % Also fill the last page fully HTH Urs Am 19.06.2012 20:10, schrieb Fidler Aoileann: Hello, The music I have written has one page and one line of music. The first page seems very busy and squashed to me so I'd like it to be spread out over the two pages. Can anyone help? Many thanks Aoileann ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Hauptstimme Brackets?
Am 04.07.2012 20:55, schrieb Nick Baskin: On Wed, Jul 4, 2012 at 2:40 PM, Thomas Morley thomasmorle...@googlemail.com mailto:thomasmorle...@googlemail.com wrote: 2012/7/4 Nick Baskin amphio...@gmail.com mailto:amphio...@gmail.com: Hey all, Is there any way to create Hauptstimme and Nebenstimme brackets in LilyPond? My searches of the manual, LSR, and recent list archives have not been fruitful. I am using version 2.14.2. Cheers, Nick Baskin What is Hauptstimme and Nebenstimme brackets? I'm a native german speaker, but I really don't understand what you're writing. Could you provide an example? -Harm @Nathan: Brilliant! This is just what I needed. Thanks! @Thomas/Harm: Hauptstimme and Nebenstimme brackets are used to show which voices in a thick texture are the most important ones. My understanding is that they were first invented by Schoenberg, but this could be incorrect. There is a little information on the English Wikipedia here: http://en.wikipedia.org/wiki/Hauptstimme , Quite correct, but Hauptstimme and Hauptsatz or Nebenstimme and Seitensatz really aren't equivalent. but the German Wikipedia article it links to appears to be about something rather different. (My German is not good enough to tell for certain, though, sorry!) No, this link is quite nonsensical. The German article isn't really related to the topic. Best Urs ~Nick Baskin -- And she forgot the stars, the moon, and sun, And she forgot the blue above the trees, And she forgot the dells where waters run, And she forgot the chilly autumn breeze... --- Keats, Isabella, or the Pot of Basil ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Turning a lilypond file into a Sibelius file
Unfortunately there is no way to accomplish what you want ATM. There has been some (or even much) discussion about implementing a MusicXML export that doesn't contain all the layout but rather the musical information. But AFAICS that's far from becoming a reality. HTH Urs Am 05.08.2012 16:23, schrieb Warren Cohen: I have a rather interesting problem. I need to turn a lilypond file into a Sibelius file. It seems that lilypond is not XML compatible, but is there a way to convert it that would make it easier and more accurate than converting a PDF file? Thanks for letting me know Warren Cohen ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Incremental compiling
Another idea (based on sth so wrote earlier): What I'm doing all of the time (when working on longer pieces) is messing around with \set Score.skipTypesetting I set it - to ##t at the beginning of the piece - to ##f a few measures before the point where I'm working on and - to ##t again a few measures after the point (for this I usually just place a skip after the 'insert' point) An editor could try to figure out the point where on just inserts music, do something similar to compile just a short section of the piece (maybe together with a -dpreview option) and show this snippet in a preview window. Of course I'm aware of the fact that this isn't as trivial as it may sound: If the editor shouldn't be required to parse the whole piece it has to rely on some user provided information in the source file (e.g. barNumberChecks, bar checks or special comments). It may be complex to determine the correct point if we are using variables and changing time signatures etc. Maybe one could start with something as simple as: - find the cursor - go up in the source until you find m bar checks - insert \set Score.skipTypesetting = ##f there (this should be transparent to the user: either use some form of stream to pass to lilypond or write a temporary file) - go back to the cursor and look downwards in the score - if you find n bar checks then insert \set Score.skipTypesetting = ##t there (if you don't find them we assume we're already at the end of the music input) Mmaybe it's something to think about. Best Urs Am 09.08.2012 09:26, schrieb Vaughan McAlley: Following one of the tangents from the “Sibelius Software UK office shuts down thread”, here’s a potential algorithm for incremental compiling. It’s only a suggestion: sorry if it’s flawed or you don’t like it! • when Lilypond is compiled, a temp file is created, containing the source file, and page-layout structure of the music. For example: Page 1 has two systems System 1 contains measures 1-4 System 2 contains measures 5-7 etc... Maybe also a database of which measure (if any) the beginning of each line of source is part of. • if Lilypond is invoked with the --incremental option, Lilypond compares its cached copy of the source file with the source file presented, and finds the first point of difference. Then it knows which measure it wants to be on the first page it’s actually publishing • then, beginning at the appropriate page, it lays out one or two pages worth of music, using simple Finale-like rules of page layout (if a measure is too wide, it goes to the next page) • if in doubt, do a full compile With large scores, compile time would be reduced to slightly more than a one- or two-page score. Watching a compile, the “interpreting music” stage is very quick compared to “preprocessing graphic elements” and layout optimization, and the extra work would incur little overhead (and could be done after the PDF file is produced). Vaughan ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Emmentaler Glyph numbers
Hi list, sorry if this is 'findable' somewhere. But I have searched for so many new things recently that I may not be seeing the wood for the trees anymore ;-) I need to insert single music glyphs in LaTeX text and would definitely prefer using the Emmentaler ones for this (not only, but also for consistency, as the other music in the document is LilyPond). As I'm using XeLaTeX it is quite easy to install and access the Emmentaler otf fonts and write (for example) \newcommand{\fingerOne}{{\fontspec{Emmentaler}\char31} } which gives the desired output. My problem is that I don't seem to find a complete list of the Unicode codes of Emmentaler's glyphs that I can use for different commands. In the character Map of my Ubuntu's default Font Viewer I only see a few correct glyphs, mixed with many others that apparently are from other fonts (I assume the viewer is confused by Emmentaler's non-standard encoding). On the list I found a solution using XeTeXglyph, but didn't succeed with it. So: Any hint for - a complete list of Unicode codes for the Emmentaler fonts? - a Ubuntu tool where I can lookup the numbers? - any other working solution to include Emmentaler glyphs in a XeLaTeX document? Thanks Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Emmentaler Glyph numbers
OK, I found my way myself. Sorry for the noise (which might prove not to be noise after all ...) The wrong characters in my Ubuntu character map were obviously some default glyphs for the Unicode glyphs at this point. After trying out the codes from 00 to FF and finding only a few single glyphs I gave up (fortunately) and installed FontForge. So now I know the Emmentaler Glyphs are located from E100 throughout E31C. I already started writing some commands for this and will turn this into a library to be developed on GitHub. I will only be actively writing commands that I might use, so I'd be glad if others would participate to make it more complete. When I have started this up, I'll post a link soon. Best Urs Am 14.08.2012 12:25, schrieb Urs Liska: Hi list, sorry if this is 'findable' somewhere. But I have searched for so many new things recently that I may not be seeing the wood for the trees anymore ;-) I need to insert single music glyphs in LaTeX text and would definitely prefer using the Emmentaler ones for this (not only, but also for consistency, as the other music in the document is LilyPond). As I'm using XeLaTeX it is quite easy to install and access the Emmentaler otf fonts and write (for example) \newcommand{\fingerOne}{{\fontspec{Emmentaler}\char31} } which gives the desired output. My problem is that I don't seem to find a complete list of the Unicode codes of Emmentaler's glyphs that I can use for different commands. In the character Map of my Ubuntu's default Font Viewer I only see a few correct glyphs, mixed with many others that apparently are from other fonts (I assume the viewer is confused by Emmentaler's non-standard encoding). On the list I found a solution using XeTeXglyph, but didn't succeed with it. So: Any hint for - a complete list of Unicode codes for the Emmentaler fonts? - a Ubuntu tool where I can lookup the numbers? - any other working solution to include Emmentaler glyphs in a XeLaTeX document? Thanks Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Emmentaler Glyph numbers
Am 14.08.2012 19:29, schrieb Werner LEMBERG: So now I know the Emmentaler Glyphs are located from E100 throughout E31C. Don't rely on character code numbers! As soon as a new glyph gets added to the Emmentaler font, they can change. The only reliable way to access the glyphs is with glyph names. Werner ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user Thanks for this info (although I'd prefer not having to have it :-( ) Can you tell me how I can access a glyph by name from XeLaTeX / fontspec then? Thanks Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Emmentaler Glyph numbers
Thank you for this, which also worked for me. As I wanted to have it the 'fontspec' way, I tried from there and came up with \newcommand*{\lilyGlyph}[2]{\fontspec[Scale=#1]{Emmentaler-11} \XeTeXglyph\XeTeXglyphindex#2 } and then (for exmple) \newcommand*{\flatflat}{\raisebox{0.2ex}{\lilyGlyph{1.5}{accidentals.flatflat}}} Leaving out the scaling and offsetting it looks even more straightforward: \newcommand*{\lilyGlyph}[1]{\fontspec{Emmentaler-11} \XeTeXglyph\XeTeXglyphindex#1 } and then (for exmple) \newcommand*{\flatflat}{\lilyGlyph{accidentals.flatflat}} (That's just for the record. Might be somewhat OT, but I think the intended audience for this may well be LilyPond users...) Best Urs Am 14.08.2012 22:12, schrieb Werner LEMBERG: Thanks for this info (although I'd prefer not having to have it :-( ) Can you tell me how I can access a glyph by name from XeLaTeX / fontspec then? Looking into XeTeX-reference.pdf, this works for me (assuming that you have emmentaler-20.otf installed where XeTeX can find it): The scripts.varsegno sign: \font\1 = Emmentaler-20 \1 \XeTeXglyph \the\XeTeXglyphindex scripts.varsegno \bye BTW, this is XeTeX from TeXLive 2012. Werner ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
lilyglyphs LaTeX package
Hi list, this is somewhat OT, but only slightly, I think. In need to insert music glyphs in continuous text (for writing a revision report) I successfully found out how to insert glyphs from LilyPond's Emmentaler font in (Xe)LaTeX documents and wrote a few first commands (thanks to Google and Werner Lemberg). As this may well be useful for anybody writing about music with LaTeX, I decided to make a package out of it. The project is hosted at https://github.com/uliska/lilyglyphs. The package is already useable, but there will be some syntax changes in the near future, so I'd rather not use it extensively (you can see the issues in the tracker to get an impression). For now there are a few predefined commands for glyphs, and a generic command to access glyphs by their name, so anything should already be possible. In the download section there is a pdf that documents how it works so far and also gives a good impression on what it looks like. You may either clone into the repository or download the package archive from the download page. So far there aren't any useful installation instructions, but I think it should work. You can place a symlink to the .sty file and a symlink to the definitions/ directory in the directory of your .tex file, and it should work. I will be away for two weeks but would be happy to find a few collaborators afterwards to join the project. a) there are a few issues that I would prefer not to decide alone but rather discuss, b) a few issues with LaTeX programming where I'd appreciate some help, and c) the ultimate goal is to cover the whole glyph set, but this will only become reality with several contributors. I will happily work on glyphs that I use personally, but there are so many things I won't use ... I hope this is on interest to anybody. Please feel free to forward this message to whom it may concern ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: lilyglyphs LaTeX package
Hi Reinhold, Werner and Philippe, thanks for your feedback. Here are a few ideas before I finally leave. [I won't read this list (from tomorrow), so if you want to contact me in the next weeks, please write to g...@ursliska.de] My package works with XeLaTeX because I decided to use this flavor. Actually the possibility to access OpenType fonts and features that way was the final point for my decision to seriously jump into LaTeX use. As Philippe and Werner pointed out there are ways to use Emmentaler glyphs also in plain LaTeX, but I won't actively go after this. What I propose, and what I think is quite possible, is: * There is the generic access command (\lilyGlyph ATM) * This command is then called by the predefined commands (such as e.g. \doublesharp) and can be called within a LaTeX document. * If we can manage to keep the interface to this generic command consistent I would be happy to include another 'backend'. * I think that the generic access command could become rather an 'interface' command. Depending on an option that can be passed to the package, the interface command would then call the appropriate generic access command. * Maybe it's necessary to somehow create a lookup table to map the Type1 numbers to the OpenType glyphnames. I found this for example: https://groups.google.com/forum/?fromgroups#!topic/comp.text.tex/MDzy2xNUC84[1-25] - which could be of help. * If that works, everything that comes at a higher level (i.e. the actual glyph commands) could be independent of the used LaTeX flavor. This has a few consequences: * There will be the need for more discussion and design before my prospected first official '0.1' release - but I think it would be worth the time and effort. * I won't be able to add new glyphs before this design phase is finished (because I'm afraid of having to update all the commands due to changed syntax). This is principally OK with me, but could cause some headaches because I started all this for a current project - and I think this revision report will be quite long, and I need the glyphs for it ... * I probably won't / can't do anything about the 'plain LaTeX backend' - just because I don't know anything about it, and I can't afford the time developing something I won't ever use myself. * ATM the stuff of integrating two 'backends' through package options seems over my head (as I'm practically new to LaTeX). Maybe I will learn it on the way, but any assistance in this field would be appreciated. Best for now Urs Am 15.08.2012 17:34, schrieb Urs Liska: Hi list, this is somewhat OT, but only slightly, I think. In need to insert music glyphs in continuous text (for writing a revision report) I successfully found out how to insert glyphs from LilyPond's Emmentaler font in (Xe)LaTeX documents and wrote a few first commands (thanks to Google and Werner Lemberg). As this may well be useful for anybody writing about music with LaTeX, I decided to make a package out of it. The project is hosted at https://github.com/uliska/lilyglyphs. The package is already useable, but there will be some syntax changes in the near future, so I'd rather not use it extensively (you can see the issues in the tracker to get an impression). For now there are a few predefined commands for glyphs, and a generic command to access glyphs by their name, so anything should already be possible. In the download section there is a pdf that documents how it works so far and also gives a good impression on what it looks like. You may either clone into the repository or download the package archive from the download page. So far there aren't any useful installation instructions, but I think it should work. You can place a symlink to the .sty file and a symlink to the definitions/ directory in the directory of your .tex file, and it should work. I will be away for two weeks but would be happy to find a few collaborators afterwards to join the project. a) there are a few issues that I would prefer not to decide alone but rather discuss, b) a few issues with LaTeX programming where I'd appreciate some help, and c) the ultimate goal is to cover the whole glyph set, but this will only become reality with several contributors. I will happily work on glyphs that I use personally, but there are so many things I won't use ... I hope this is on interest to anybody. Please feel free to forward this message to whom it may concern ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Subject: Re: lilyglyphs LaTeX package
The package doesn't have real installation instructions (or even an installation procedure) yet (something for 0.1, a first official release). Fortunately xelatex-ubuntu is what I have, so I can tell you how you will make it work. One issue is that there are included files in a subfolder. (I assume I'll have to do something about that for a 'real' packaged version.) As a dirty quick 'installation' I recommend: * place lilyglyphs.sty and the complete definitions/ folder somewhere on your disk, e.g. in a directory ~/lilyglyphs. * place the Emmentaler OTF file from the OTF folder in ~/.fonts (Maybe you have to run fc-cache afterwards to update your fontconfig cache - but I don't know for sure, I can't do any harm anyway) * create symlinks to lilyglyphs.sty and the definitions/ folder _in the directory_ where your .tex file is located: ln -s ~/lilyglyphs/lilyglyphs.sty ln -s ~/lilyglyphs/definitions - This is going to pretend that the package is in the same dir as your .tex file. Alternatively you can (for testing the package) put your .tex file in the directory where lilyglyphs.sty is. You may get long lists of 'kpathsea' errors. This is what I had on some of my computers (not only with this package but also earlier with other OpenType fonts and fontspec). I finally found out that this happened when I had 'activated' the respective fonts with a font manager (FontMatrix). When all these references were away, fontspec worked fine. Hope this helps (works) Best Urs Am 16.08.2012 13:37, schrieb Stefan Thomas: Dear Urs, how can I install this package in my xelatex-system on ubuntu? ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Subject: Re: lilyglyphs LaTeX package
Am 16.08.2012 13:57, schrieb Werner LEMBERG: * place lilyglyphs.sty and the complete definitions/ folder somewhere on your disk, e.g. in a directory ~/lilyglyphs. * create symlinks to lilyglyphs.sty and the definitions/ folder _in the directory_ where your .tex file is located: ln -s ~/lilyglyphs/lilyglyphs.sty ln -s ~/lilyglyphs/definitions - This is going to pretend that the package is in the same dir as your .tex file. Alternatively you can (for testing the package) put your .tex file in the directory where lilyglyphs.sty is. Ouch. Why not simply put it into your local TEXMF folder, usually ~/texmf? Then you don't have to do any further links! If it doesn't exist yet, you should create it. An appropiate subdirectory is ~/texmf/tex/xelatex/lilyglyphs/ Oops, didn't think this would work with the subfolder ... Werner ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Subject: Re: lilyglyphs LaTeX package
Now I know that, thanks :-) Just had to exclude this from the git repo that controls my texmf dir ;-) Best Urs Am 16.08.2012 14:29, schrieb Werner LEMBERG: ~/texmf/tex/xelatex/lilyglyphs/ Oops, didn't think this would work with the subfolder ... This gets searched recursively by default. Werner ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: setting Delia Derbyshire's abstract electronic scores
Am 16.08.2012 19:31, schrieb martinwguy: On 14 August 2012 21:06, Francisco Vila paconet@gmail.com wrote: El 13/08/2012 21:55, martinwguy martinw...@gmail.com escribió: Is Lilypond capable of helping with exotic stuff like this, from Delia Dervyshire's notes for her, maybe lost, Radio Newsreel signature tune e.g. the bottom of http://delia-derbyshire.net/papers/html/dd164139.html the top left and bottom left corners of http://delia-derbyshire.net/papers/html/dd164239.html or most of http://delia-derbyshire.net/papers/html/dd164209.html ? I am curious to see what others respond. At first I ask you: where is the music? LP is for music engraving. Looking at the 100 percent graphic score, my question is the reverse: are the GIMP or Inkscape capable of music engraving? There are more conventional scores too, at least, they have 5 lines and notes :), but she sometimes also paints sounds with shapes. M ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user I wouldn't really judge without having seen more. But in the end I think this kind of score would be better (easier) done with some kind of graphics software. I think I would only create some snippets with LilyPond that are musical notation in a more traditional sense - and then make images from it and use these as images ... Best Urs ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user