Re: Feedback wanted: syntax highlighting in the LilyPond documentation
k, thanks for trying out, but could you explain what it does more precisely? Specifically, what is setting apart \tuplet so that it is not bold? Also, you seem no longer to highlight grob properties, does that mean context properties are not highlighted as well? (https://lists.gnu.org/archive/html/lilypond-devel/2021-12/msg00107.html gives a script you can use to play around and make specific proposals.) [Calvin] Would it be possible to have a menu for changing the highlighting settings to create some customizability? I'm not familiar with web development at all so I don't know if this would be difficult to implement. That's conceivable, but quite a bit of work for unlikely widespread usage, and also requires JavaScript and cookies which is usually not very appreciated in the free software world around GNU LilyPond. Luckily, there is no need for it to be implemented in LilyPond. The default CSS stylesheet is at http://abou-samra.fr/highlighting-demo/css/lilypond-highlighting.css (of course this will/would be on the lilypond.org server eventually). Using your browser, possibly with an extension, you can inject custom CSS, applying any styling you want. For example, with Firefox, you can use Stylus: https://addons.mozilla.org/fr/firefox/addon/styl-us/ Jean It will be necessary to keep an uncolored version for men (in principle women do not have this problem) who do not see well certain colors. Marc lanoiselée
Re: Center graphical markup on staff
Le 22/06/2021 à 02:31, Nuno Trocado a écrit : Hi everyone! How can I have the wiggly line in the example below centered inside the staff? Thanks, Nuno \score { \relative c' { c4 d s-\markup \override #'(height . 2) \draw-squiggle-line #1 #'(8 . 0) ##f } } \score { \relative c' { c4 d \override TextScript #'extra-offset = #'(0 . 4.7) s-\markup \override #'(height . 2) \draw-squiggle-line #1 #'(8 . 0) ##f }
"Dim" crashes into adjoining dynamic
I have a number of cases where "dim." is colliding with the adjoining dynamic (say "pp"). The manual says that a dynamic can be given extra width with the following: \override DynamicText.extra-spacing-width = #'(-0.5 . 0.5) However, LP apparently doesn't consider "dim." to be a dynamic, as this does not work. What would be the comparable spacing override for "dim."? -- Marc Shepherd
Re: Margin between Header and Music
That's it...thanks! On Mon, Nov 23, 2020 at 9:19 AM Knute Snortum wrote: > I think that would be "markup-system". > > -- > Knute Snortum > > > > On Mon, Nov 23, 2020 at 6:01 AM Marc Shepherd wrote: > >> What parameter controls the minimum amount of space between the bottom of >> the header and the first line of music? >> >> -- >> Marc Shepherd >> > -- Marc Shepherd
Margin between Header and Music
What parameter controls the minimum amount of space between the bottom of the header and the first line of music? -- Marc Shepherd
Interaction between Tags and partCombine
Tags are used to conditionally include music expressions in multiple scores prepared from the same source text. partCombine is used to merge separate parts onto a single staff. These two features interact in ways I found surprising. There are musical expressions that I want printed only in the full score. I preface these with \tag #'score. Other expressions I want printed only in the parts. I preface these with \tag #'parts. The full score contains many staffs in parallel, all of which are enclosed in a << >> pair. Before the first <<, I put \keepWithTag #'score. This *mostly* has the expected result: it prints everything that is either untagged or tagged score, and omits everything tagged parts. The exception is...any pair of instruments for which partCombine was used. For instance, the piece has a pair of clarinets. In the score, I want the clarinets on one staff. In the parts, I want the clarinets on separate staves. This is precisely the situation partCombine is meant to handle. But the single \keepWithTag #'score before the first << does not work for staves where partCombine was used. For only those staves, I need to re-state \keepWithTag #'score before each of the separate music expressions that is input to partCombine. I was able to discover this by trial and error, but there probably ought to be a warning about it in the manual. -- Marc Shepherd
Re: piece starting with acciaccatura problem
A 300-page quartet? Is this piece as long as *Parsifal?* On Tue, Nov 3, 2020 at 5:35 AM Andrew Bernard wrote: > It's the infamous Issue 34. It is certainly the most commonly asked > question on the list. I hold out hope it will one day be solved. I > have a 300 page string quartet with hundreds of grace notes and I have > to spend a lot of time adding spacers in three other voices to get it > to work. Needless effort that affects everybody. We had a technical > discussion on the list recently as to why this is so difficult for > lilypond to fix, but I still wish it could be solved. > -- Marc Shepherd
\unfoldRepeats
According to the documentation, the default behavior of the MIDI block is not to “unfold” repeats (other than those that are explicitly \repeat unfold). If you want repeats unfolded inside of a MIDI block, you have to requote the music within the MIDI block, nested inside of an \unfoldRepeats block. Any idea why that was chosen as the default behavior? When composers write a repeat, they usually expect it to be performed. I would have thought that automatically unfolding would be the more logical default. -- Marc Shepherd
Re: LilyPond learning curve (was: feasibilty question: simple GUI for web-based Lilypond instance)
The third factor is that there’s a large class of mistakes that you simply could not make in Finale or Sibelius: mismatched braces, beams or slurs that you forget to close, notes entered in the wrong octave, etc. On Sun, Oct 25, 2020 at 12:06 PM Martín Rincón Botero < martinrinconbot...@gmail.com> wrote: > The price you pay is that an LP score is considerably more time-consuming >> to enter >> > > I feel there are at least two factors that create this situation: the lack > of graphical interface limits the amount of selection tools (you can > basically select what your cursor can select). With more selection tools > that allowed the user to easily copy, paste, cut, insert, attach > articulations to all staves, etc., entering notes in Lilypond would be way > faster. Since I started using Python to help me create Lilypond files, I > can have whatever amount of lists I want (for example one called "tutti") > and use programmatic commands to affect all staves. F. ex. > > for staff in tutti: > add_music(staff, "c4. d8 e4 f |") > > Where "tutti" is a list, e.g. tutti = [flute, violin, cello] and add_music > is a function I programmed to add more music to the end of the staff > (amongst other I programmed, like copy_bar, insert_bar, etc.). > > The other aspect that makes working with Lilypond unnecessarily slow is > the fact that invoking the Lilypond command always processes the whole > score over and over again from scratch. Telling the user that their scores > are gonna take more time to compile every time they enter more music > doesn't sound attractive nor efficient. The alternative, only working on > the text file from beginning to end with no visual feedback to then proceed > to "debug" such file after compiling is not a realistic alternative for the > majority of users. In my Python script I'm using subprocesses in > conjunction with OLL's partial compilation that let me make pdfs page by > page (using pdftk), so that I can only update the page I'm working on > without losing the rest of the pages. > -- Marc Shepherd
Re: LilyPond learning curve (was: feasibilty question: simple GUI for web-based Lilypond instance)
I tried LP several years ago and quickly gave up. I decided to try it again because I was frustrated with all of the manual adjustments my Finale scores require, and wanted to see if LP could do better. LP is indeed better — in that its default decisions are almost always better than Finale’s default. The price you pay is that an LP score is considerably more time-consuming to enter. Although I expect to get better at it over time, I don’t think that disadvantage can ever go away entirely. I was trained as a software engineer. I later went into a different field, but I haven’t forgotten the concepts — and I feel like I need them. LP resembles coding in a lot of ways. Some of its behavior is reasonably obvious, but much of it is very hard and non-obvious. By the way, I am typesetting an opera score, which is clearly not the easiest place to start—but that is what I do. I am guessing that whoever designed LP was not thinking of orchestral scores, as some things that ought to be easy (the “MarkLine” concept) are in fact quite difficult. On Sat, Oct 24, 2020 at 2:26 PM Jean Abou Samra wrote: > I am pretty interested in how people learn LilyPond. My own experience > from discovering it around 15 is that I was able to enter simple music > quickly; however, adding staves, instrument names and creating polyphony > caused many hardships (\voiceTwo is not the second voice!, etc.) I wonder > if it'd be a good idea to organize one-time presentations, courses, this > sort of things, for music students − composers are among the primary > types of LilyPond users after all. > -- Marc Shepherd
Re: A Beam and a Slur in a Bracketed Tuplet
Many thanks! Your manual shape override did the trick. I am new to LP and honestly amazed how often it makes "pretty good" or great decisions. Problems like this stand out for their rarity. On Tue, Oct 20, 2020 at 3:59 AM Jean Abou Samra wrote: > > Le 20/10/2020 à 01:08, Marc Shepherd a écrit : > > The reason the tuplet is up, is that — in the actual music, there is a > lower voice, so the tuplet *has to be* up. I left out the lower voice in > my example, because it is not relevant to the behavior I am asking about. > > In the real score, I have not overridden the tuplet and slur direction. > With the lower voice present, LP automatically puts the slur and tuplet > bracket "up", with the "crashing" behavior I showed. > > Hello, > > I just discovered that this is a known issue: > > https://gitlab.com/lilypond/lilypond/-/issues/1642 > > Best regards, > Jean > -- Marc Shepherd
Re: A Beam and a Slur in a Bracketed Tuplet
The reason the tuplet is up, is that — in the actual music, there is a lower voice, so the tuplet *has to be* up. I left out the lower voice in my example, because it is not relevant to the behavior I am asking about. In the real score, I have not overridden the tuplet and slur direction. With the lower voice present, LP automatically puts the slur and tuplet bracket "up", with the "crashing" behavior I showed. On Mon, Oct 19, 2020 at 5:56 PM Jean Abou Samra wrote: > > Why do you force the slur direction up? LilyPond will try to do the > best job, but it cannot always get to understand your intent with > only partial information. Either: > > > - Adjust the slur manually. > > \relative c'' { > \time 3/4 > d4. d8 > \tupletUp > \tuplet 3/2 { > d\shape #'((0.2 . -0.4) (0.2 . -1) (-0.2 . -1.3) (0 . -1.2)) ([ e]) c > } > | > b2 b8.([ a16]) | > g2. > } > > Best regards, > Jean > -- Marc Shepherd
A Beam and a Slur in a Bracketed Tuplet
In the example shown below, notice that the slur is incorrectly pointing upward, and "crashing" into the tuplet bracket. It only happens with both the slur and the beam present. With slur only or beam only, it engraves correctly. Is this a known issue? Should I be coding it differently? The code used is shown below: \version "2.21.7" \new Staff \relative c'' { \time 3/4 d4. d8 \tupletUp \tuplet 3/2 { d([ e]) c } | b2 b8.([ a16]) | g2. } \addlyrics { \lyricmode { Here is some text to pon -- der. } } [image: Capture.PNG] -- Marc Shepherd
Re: How To Selectively Show a Staff
Thanks! The "showIt" / "hideIt" functions were exactly what I was looking for.
How To Selectively Show a Staff
In a score where "RemoveAllEmptyStaves" is set, a staff will normally not show in a system where it has all rests. Sometimes, you may *want* a staff (temporarily) to appear on a specific system, even though it contains all rests. What’s the command or setting to do this? -- Marc Shepherd
Re: Measure Number Collision
Kieren's example does indeed work with LP 2.21.2. However, the distribution for 2.21.2 seems to "break" a number of other functions; for instance, \fermataMarkup no longer works. Anyhow, I am still in the market for a better way to do this, but for the time being will just turn off bar numbers selectively whenever a rehearsal mark appears at the start of a system. I did a search of the archives, and I see this has been a much discussed topic over the years! On Sat, Oct 17, 2020 at 11:02 AM Kieren MacMillan < kieren_macmil...@sympatico.ca> wrote: > Hi Marc, > > > In your example, the rehearsal letters printed twice at the top of the > winds group. I don't know if it matters that I am on version 2.20 > > It may. > > > Also, if I am reading the code correctly, in a passage where only the > brass and strings play, no marks would print on that system. The example > assumes that winds will always be present. That is why I had a MarkLine at > the top of the score outside of any group. > > IIRC, there is a way to avoid that… it involves keep-alive-together, etc. > I just haven’t had time (or need, recently) to research it myself. No doubt > someone else can help you with it! > > Cheers, > Kieren. > > > Kieren MacMillan, composer (he/him/his) > ‣ website: www.kierenmacmillan.info > ‣ email: kie...@kierenmacmillan.info > > -- Marc Shepherd
Re: Measure Number Collision
Hi Kieren, In your example, the rehearsal letters printed twice at the top of the winds group. I don't know if it matters that I am on version 2.20, whereas you specified 2.21.2, which is not publicly available from the LP website. Also, if I am reading the code correctly, in a passage where only the brass and strings play, no marks would print on that system. The example assumes that winds will always be present. That is why I had a MarkLine at the top of the score outside of any group. Thanks Marc On Sat, Oct 17, 2020 at 9:53 AM Kieren MacMillan < kieren_macmil...@sympatico.ca> wrote: > Hi Marc, > > > What I want is to print the MarkLine twice, once above Violin I, and > once at the top of each system. > > In recent versions, you can just add the engravers to the appropriate > StaffGroup contexts (see below). Does that solve your problem? > > Cheers, > Kieren. > > > \version "2.21.2" > > \layout { > \context { > \Score > \override StaffGroup.SystemStartBracket.collapse-height = #4 > \remove Mark_engraver > \remove Metronome_mark_engraver > } > } > > global = { > \mark \default > \key f \major > \time 4/4 > s1*7 > \mark \default > s1*7 > } > > fakemusic = { > \relative c' { \repeat unfold 56 { c4 } } > } > > \score { > << > \new StaffGroup = "winds" > \with { \consists Mark_engraver \consists Metronome_mark_engraver } > << > \new Staff << \global \fakemusic >> > \new Staff << \global \fakemusic >> > >> > \new StaffGroup = "brass" > << > \new Staff << \global \fakemusic >> > \new Staff << \global \fakemusic >> > \new Staff << \global \fakemusic >> > >> > \new StaffGroup = "strings" > \with { \consists Mark_engraver \consists Metronome_mark_engraver } > << > \new Staff << \global \fakemusic >> > \new Staff << \global \fakemusic >> > >> > >> > } > > > > Kieren MacMillan, composer (he/him/his) > ‣ website: www.kierenmacmillan.info > ‣ email: kie...@kierenmacmillan.info > > -- Marc Shepherd
Re: Measure Number Collision
As I am a very new LP user, I copied the code from various snippets. What I want is to print the MarkLine twice, once above Violin I, and once at the top of each system. The actual top staff will not always be the same from one system to the next, because not all instruments are playing all the time. In the snippet that I provided, if I comment out the spacing override while leaving everything else the same, the rehearsal mark and bar number are way too high, as shown below. [image: Collision.PNG] On Fri, Oct 16, 2020 at 7:13 PM Carl Sorensen wrote: > > > On Fri, Oct 16, 2020 at 4:28 PM Marc Shepherd wrote: > >> Here is a minimal example showing this behavior: >> >> \version "2.20.0" >> >> \layout { >> \context { >> \name MarkLine >> \type Engraver_group >> \consists Output_property_engraver >> \consists Axis_group_engraver >> \consists Mark_engraver >> \consists Metronome_mark_engraver >> \override VerticalAxisGroup.staff-staff-spacing = >> #'((basic-distance . 1) >>(minimum-distance . 1) >>(padding . 1) >>(stretchability . 3)) >> } >> \context { >> \Score >> \remove Mark_engraver >> \remove Metronome_mark_engraver >> \accepts MarkLine >> } >> } >> >> \score { >> << >> \new MarkLine { \time 4/4 >> s1*7 >> \mark \default >> s1*7 >> } >> \new StaffGroup { >> << >> \override StaffGroup.SystemStartBracket.collapse-height = #4 >> \new Staff { >> \key f \major \relative c' { >> \repeat unfold 56 { c4 } >> } >> } >> >> >> } >> >> >> } >> >> [image: Collision.PNG] >> >> > The BarNumber is not spaced relative to the StaffGroup any more. It is > spaced relative to the MarkLine context (you can see this by commenting out > your VerticalAxisGroup.staff-staff-spacing override). > The MarkLine context is spaced relative to the Staff (as can be seen by > the override you use). The System Start Bracket belongs to the StaffGroup, > not the Staff, so I believe it's not part of the collision resolution for > the staff-staff-spacing. > > There is clearly a problem with a collision here, but you've done enough > altering contexts that I'm not sure it's a LilyPond error rather than a > user error. I don't fully grasp how the MarkLine context works in your > example. You are using it somewhat differently than it was proposed on the > list (where it was proposed to be between staffs, where bar numbers don't > live). I'm sorry, but I can't figure out how to fix this. > > Carl > > -- Marc Shepherd
Re: Measure Number Collision
This is an orchestral score, where the convention is to print tempo and rehearsal marks twice, at the top of the system and above the first violin staff. In the LP documentation, the recommended way to do this is to create a separate context called “MarkLine” for rehearsal and tempo marks. So that is the reason for removing Mark_engraver and Metronome_mark_engraver from the Score context, and putting them in a different context. Obviously that is not needed for this tiny example, but I stripped out a lot of material to create a very minimal score exhibiting the behavior. On Fri, Oct 16, 2020 at 7:09 PM Thomas Morley wrote: > > > Am Sa., 17. Okt. 2020 um 00:28 Uhr schrieb Marc Shepherd < > oakapp...@gmail.com>: > >> Here is a minimal example showing this behavior: >> >> \version "2.20.0" >> >> \layout { >> \context { >> \name MarkLine >> \type Engraver_group >> \consists Output_property_engraver >> \consists Axis_group_engraver >> \consists Mark_engraver >> \consists Metronome_mark_engraver >> \override VerticalAxisGroup.staff-staff-spacing = >> #'((basic-distance . 1) >>(minimum-distance . 1) >>(padding . 1) >>(stretchability . 3)) >> } >> \context { >> \Score >> \remove Mark_engraver >> \remove Metronome_mark_engraver >> \accepts MarkLine >> } >> } >> >> \score { >> << >> \new MarkLine { \time 4/4 >> s1*7 >> \mark \default >> s1*7 >> } >> \new StaffGroup { >> << >> \override StaffGroup.SystemStartBracket.collapse-height = #4 >> \new Staff { >> \key f \major \relative c' { >> \repeat unfold 56 { c4 } >> } >> } >> >> >> } >> >> >> } >> >> [image: Collision.PNG] >> >> On Fri, Oct 16, 2020 at 3:58 PM Xavier Scheuer >> wrote: >> >>> On Fri, 16 Oct 2020 at 20:55, Marc Shepherd wrote: >>> > >>> > In the example shown below, lilypond is shifting the measure number >>> (85) down, because it thinks there is a collision with the rehearsal letter >>> "C". But in fact there is no collision: the 85 would be just fine in its >>> normal position. This occurs only where a rehearsal letter coincides with >>> the first bar of a system. >>> > >>> > Is there a setting that tells lilypond, "Please ignore any supposed >>> collision, and put the measure number where it would ordinarily go"? >>> >>> Hi Marc, >>> >>> Could you provide a minimal example of code showing this behavior? >>> Or at least provide the version number you are using? >>> >>> I guess it should give better results with versions later (or equal to) >>> 2.21.0, where issue 5621 has been fixed. >>> https://gitlab.com/lilypond/lilypond/-/issues/5621 >>> >>> Otherwise I consider this collision between bar number and bracket a new >>> bug (to be reported). >>> >>> Cheers, >>> Xavier >>> >>> -- >>> Xavier Scheuer >>> >>> >> >> -- >> Marc Shepherd >> > > Hi Marc, > > why do you move Mark_engraver and Metronome_mark_engraver? > Don't do so and all's fine. > > Cheers, > Harm > -- Marc Shepherd
Re: Measure Number Collision
Here is a minimal example showing this behavior: \version "2.20.0" \layout { \context { \name MarkLine \type Engraver_group \consists Output_property_engraver \consists Axis_group_engraver \consists Mark_engraver \consists Metronome_mark_engraver \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 1) (minimum-distance . 1) (padding . 1) (stretchability . 3)) } \context { \Score \remove Mark_engraver \remove Metronome_mark_engraver \accepts MarkLine } } \score { << \new MarkLine { \time 4/4 s1*7 \mark \default s1*7 } \new StaffGroup { << \override StaffGroup.SystemStartBracket.collapse-height = #4 \new Staff { \key f \major \relative c' { \repeat unfold 56 { c4 } } } >> } >> } [image: Collision.PNG] On Fri, Oct 16, 2020 at 3:58 PM Xavier Scheuer wrote: > On Fri, 16 Oct 2020 at 20:55, Marc Shepherd wrote: > > > > In the example shown below, lilypond is shifting the measure number (85) > down, because it thinks there is a collision with the rehearsal letter "C". > But in fact there is no collision: the 85 would be just fine in its normal > position. This occurs only where a rehearsal letter coincides with the > first bar of a system. > > > > Is there a setting that tells lilypond, "Please ignore any supposed > collision, and put the measure number where it would ordinarily go"? > > Hi Marc, > > Could you provide a minimal example of code showing this behavior? > Or at least provide the version number you are using? > > I guess it should give better results with versions later (or equal to) > 2.21.0, where issue 5621 has been fixed. > https://gitlab.com/lilypond/lilypond/-/issues/5621 > > Otherwise I consider this collision between bar number and bracket a new > bug (to be reported). > > Cheers, > Xavier > > -- > Xavier Scheuer > > -- Marc Shepherd
Measure Number Collision
In the example shown below, lilypond is shifting the measure number (85) down, because it thinks there is a collision with the rehearsal letter "C". But in fact there is no collision: the 85 would be just fine in its normal position. This occurs only where a rehearsal letter coincides with the first bar of a system. Is there a setting that tells lilypond, "Please ignore any supposed collision, and put the measure number where it would ordinarily go"? [image: collision.PNG] -- Marc Shepherd
Re: Markup Between Systems
So...what I am trying to do is put a block of text above a system that occupies the full width of the page. This is a theatrical work, and the block of text is a stage direction that is paragraph-length. I can create a dynamics context at the top of the score, and attach my markup to a spacer rest at the beginning of that system. But then, Lilypond counts my markup as part of the spacing calculation of the system, which is not the desired effect. Also, Lilypond wants to put my markup between the left- and right-most barlines of the system, instead of using the full page width. I know that free-standing markup (not attached to any note or rest) can reside between \score’s, but not within a \score. Basically, I am looking for a way to achieve that effect without having to end the current score and start a new one. Thanks Marc On Mon, Oct 12, 2020 at 8:25 AM Andrew Bernard wrote: > What's wrong with hanging it off a note or rest? I do this all the > time for long sloping lines for accel. and rall. indicators. Works for > me. > > Can you send a sketch or image of your use case? > > Andrew > > > > On Mon, 12 Oct 2020 at 07:40, Marc Shepherd wrote: > > > > > > I want markup that is within a score (above a system), but not attached > to a staff or note. > > -- Marc Shepherd
Markup Between Systems
Is there a way to print markup that occupies the full width of the page, and resides between two systems? I know that if there are multiple scores within the same book, a markup block can reside between two scores (or above or below any of them). I want markup that is within a score (above a system), but not attached to a staff or note. -- Marc Shepherd
Re: bach chorales
I'm not the author (I had it in my archives) The license seems to show that it can be placed in a git repository. Marc Le 24/05/2020 à 11:41, Matt Wallis a écrit : On 24/05/2020 05:05, Andrew Bernard wrote: Hello Marc, Who are we to thank for this wonderful and useful work? I see the name Ph. Hardy in the score with an email. Is he still active? Andrew On Sun, 24 May 2020 at 02:26, Marc via LilyPond user discussion wrote: Dropbox link https://www.dropbox.com/s/slxstuqpxbqojnp/Bach-371-Chorals-sources-ly_midi-3.zip?dl=0 • Copyleft 2011/01: cette oeuvre est libre, vous pouvez la (photo)copier, la diffuser ou la modifier, selon les termes de la Licence Art Libre, voir: http://www.artlibre.org/licence/lal/ [en, de, es, pt, it] Créé avec GNU LilyPond 2.13.51 http://www.LilyPond.org par Ph. Hardy. http://superbonus.project.free.fr Free Art License Marc, Many thanks for the link. Am I right to understand from the license that it would be ok to make these files available on a public git repository (e.g. Gitlab.com)? Matt
Re: bach chorales
Dropbox link https://www.dropbox.com/s/slxstuqpxbqojnp/Bach-371-Chorals-sources-ly_midi-3.zip?dl=0 • Copyleft 2011/01: cette oeuvre est libre, vous pouvez la (photo)copier, la diffuser ou la modifier, selon les termes de la Licence Art Libre, voir: http://www.artlibre.org/licence/lal/ [en, de, es, pt, it] Créé avec GNU LilyPond 2.13.51 http://www.LilyPond.org par Ph. Hardy. http://superbonus.project.free.fr Free Art License Marc Lanoiselée Le 23/05/2020 à 15:17, Matt Wallis a écrit : On 23/05/2020 14:00, David Nalesnik wrote: Hi all, Is anyone aware of Bach's 371 being transcribed into LilyPond? I have some faint recollection of this, but I'm not finding anything at Mutopia. Thanks, David As a Bach fan, I was intrigued ... For me, the fourth hit on Google (searched "bach 371 lilypond") was this wonderful-looking resource: https://www.guitarland.com/MusicTheoryWithToneJS/BachChorales.html Does that help?
Re: Can \markuplist prduce uneven width columns?
you can obtain something close with the new \table markup-list command http://lilypond.org/doc/v2.19/Documentation/notation/text-markup-list-commands On Wed, Nov 27, 2019 at 7:10 AM Peter Toye wrote: > I'm trying to write some editorial notes for a score, and would like to > have the references in uneven-width word-wrapped columns. The effect I want > is something like: > > Bar 27This text is hopelessly garbled in the sources, which are > also mutually >inconsistent. The editor has produced what he hopes is a performable >version. > > Bar 28"in tempo" aligned but probably best on 6/16 (in neither of > the primary >sources > > As fas as I can see, neither \markup nor \markuptext have this facility. > > Regards, > > Peter > mailto:lilyp...@ptoye.com > www.ptoye.com > -- -- Marc
Re: Mysterious behavior in music function
Thanks so much for this explanation, and for the working version that does exactly what I wanted! It's very much appreciated. Marc Marc Evanstein www.marcevanstein.com Sun Aug 04 16:07:28 PDT 2019 Thomas Morley : > Am So., 4. Aug. 2019 um 22:49 Uhr schrieb Marc Evanstein > : > > > > Hi all, > > > > I'm trying to define a music function that adds a gliss after a note down > > to a second parenthesized grace note. I've tried the following, but the > > gliss doesn't show up: > > > > \version "2.19.83" > > \language "english" > > > > bendDown = > > #(define-music-function > > (parser location firstNote secondNote) > > (ly:music? ly:music?) > > #{ > > \afterGrace > > $firstNote > > \glissando > > \once \override Stem.stencil = ##f > > \once \override Flag.stencil = ##f > > \parenthesize $secondNote > > #} > > ) > > > > \score { > > \new Staff \with { instrumentName = #"Flute" } > > { > > \bendDown g'2 f'4 > > } > > } > > > > More than this, what I'm truly puzzled by is that if I remove "\afterGrace" > > and just let the second note be a normal note, I get an error: > > > > error: syntax error, unexpected EVENT_IDENTIFIER > > > > \glissando > > > > If I copy paste the function text replacing the variables, then I get > > almost what I want, except that the stem of the grace note is still there: > > > > \score { > > \new Staff \with { instrumentName = #"Flute" } > > { > > \afterGrace > > g'2 > > \glissando > > \once \override Stem.stencil = ##f > > \once \override Flag.stencil = ##f > > \parenthesize f'4 > > } > > } > > > > What does seem to totally work is to use a regular grace instead of an > > afterGrace, except that I can't seem to write it as a music function > > without getting that same "unexpected EVENT_IDENTIFIER" error: > > > > \score { > > \new Staff \with { instrumentName = #"Flute" } > > { > > g'2 > > \glissando > > \grace > > \once \override Stem.stencil = ##f > > \once \override Flag.stencil = ##f > > \parenthesize f'4 > > } > > } > > > > Can anyone shed some light on this for me? > > > > Thanks in advance! > > > > Marc > > Hi Marc, > > two Problems: > (1) > A postevent can't be attached to a music-variable, this feature will > be likely be available with next stable. See: > one = c'4 > two = d'4 > { $one \glissando $two } > which returns the known error. > But you can workaround by attaching the postevent to an empty chord in > front of the musical variable, then it will be "sort of merged" with > the note: > one = c'4 > two = d'4 > { <>\glissando $one $two } > > (2) > afterGrace expects _two_ musical arguments. > Your code > > #{ > > \afterGrace > > $firstNote > > \glissando > > \once \override Stem.stencil = ##f > > \once \override Flag.stencil = ##f > > \parenthesize $secondNote > > #} > > provides $firstNote as first argument and \glissando as the second. > (And there is an optional argument for the `fraction´) > > You will want to have a first-note-with-starting-glissando as first argument > and > a parenthesize-second-note-with-overrides as second. Thus use brackets: > > bendDown = > #(define-music-function > (parser location firstNote secondNote) > (ly:music? ly:music?) > #{ > \afterGrace 15/16 > { > <>\glissando > $firstNote > } > > { > \once \override Stem.stencil = ##f > \once \override Flag.stencil = ##f > \parenthesize $secondNote > } > #} > ) > \score { > \new Staff \with { instrumentName = #"Flute" } > { > \bendDown g'2 f'4 > } > } > > Works here. > > HTH, > Harm > ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Mysterious behavior in music function
Hi all, I'm trying to define a music function that adds a gliss after a note down to a second parenthesized grace note. I've tried the following, but the gliss doesn't show up: \version "2.19.83" \language "english" bendDown = #(define-music-function (parser location firstNote secondNote) (ly:music? ly:music?) #{ \afterGrace $firstNote \glissando \once \override Stem.stencil = ##f \once \override Flag.stencil = ##f \parenthesize $secondNote #} ) \score { \new Staff \with { instrumentName = #"Flute" } { \bendDown g'2 f'4 } } More than this, what I'm truly puzzled by is that if I remove "\afterGrace" and just let the second note be a normal note, I get an error: error: syntax error, unexpected EVENT_IDENTIFIER \glissando If I copy paste the function text replacing the variables, then I get almost what I want, except that the stem of the grace note is still there: \score { \new Staff \with { instrumentName = #"Flute" } { \afterGrace g'2 \glissando \once \override Stem.stencil = ##f \once \override Flag.stencil = ##f \parenthesize f'4 } } What does seem to totally work is to use a regular grace instead of an afterGrace, except that I can't seem to write it as a music function without getting that same "unexpected EVENT_IDENTIFIER" error: \score { \new Staff \with { instrumentName = #"Flute" } { g'2 \glissando \grace \once \override Stem.stencil = ##f \once \override Flag.stencil = ##f \parenthesize f'4 } } Can anyone shed some light on this for me? Thanks in advance! Marc pEpkey.asc Description: application/pgp-keys ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Orchestra Tempo Staff?
Hi Kieren, Many thanks to both you and Rick for your replies. I looked up MarkLine, and it was exactly what I was looking for. The one issue I ran into is that I did have to add "\consists Text_spanner_engraver" to get rit and accel spanners to show up, and now that they show up, they are not at the same height as the metronome marks (they are significantly below). Do you know why this is happening? Thanks again, Marc On 4/24/19 10:52 AM, Kieren MacMillan wrote: > Hi Marc, > >> in the score I would like tempo markings to >> appear at the top as well as above the strings, and that I'd also like >> to keep all the marks at the same vertical level. I'm wondering if maybe >> the marks need to in some way occupy their own "staff", similar to a >> separate dynamics staff, except not containing dynamics? > Yes. Search the list and LSR for terms like "MarkLine" and "ScoreMarks" and > you’ll find lots of examples. > > Hope that helps! > Kieren. > > > Kieren MacMillan, composer > ‣ website: www.kierenmacmillan.info > ‣ email: i...@kierenmacmillan.info > pEpkey.asc Description: application/pgp-keys ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Orchestra Tempo Staff?
Hi everyone, I'm currently trying to engrave an orchestra piece, and am unclear about the best way to work with metronome marks, accelerandi, ritardandi and other tempo markings. The basic issue is that in the score I would like tempo markings to appear at the top as well as above the strings, and that I'd also like to keep all the marks at the same vertical level. I'm wondering if maybe the marks need to in some way occupy their own "staff", similar to a separate dynamics staff, except not containing dynamics? Any advice would be greatly appreciated! It feels like maybe I'm missing something obvious. Thanks, Marc -- Marc Evanstein (formerly Evans) PhD Candidate in Music Composition at UCSB Stanford BA '10, Music; MA '11, Music, Science and Technology www.marcevansmusic.com <>___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: variables for specific kinds of markup?
Thanks so much – changing it to define-event-function worked perfectly. Is a markup considered an "event" rather than "music"? Was define-music-function somehow returning that event attached to empty music or something? At any rate, glad to hear that this is getting simpler in the near future, and many thanks for all the help! September 17, 2018 8:01 AM, "David Kastrup" wrote: > "Marc Evanstein (formerly Evans)" writes: > >> Hi all, >> >> I'm trying to create a variable to handle a certain type of markup >> text. For instance, I'd like percussion strikings to be in small caps >> above the staff, and what I really want is to define some sort of >> macro that replaces all instances of "\striking { theText }" with >> "^\markup\smallCaps { theText }". >> >> The following clearly doesn't work (much as I would like it to): >> >> striking = ^\markup\smallCaps > > Current master will allow > > striking = ^\markup \smallCaps \etc > >> From searching around, it seems like I need to define a function using >> scheme. I tried this: >> >> striking = #(define-music-function (parser location text) >> (string?) >> #{ >> ^\markup\smallCaps { #text } >> #}) >> >> ... and while the single line "\striking mallet" seems to render the >> word mallet as a smallCaps markup above a dummy staff, when I try to >> incorporate it into a series of notes, e.g.: >> >> {c'4 \striking mallet d'4 e'4 f'4 } >> >> I get an "error: unexpected post-event". What exactly does that mean? > > Current master would have worked as expected for this use... > > At any rate, you are pretty close (whether we are talking about 2.18 or > 2.19). Just use define-event-function instead of define-music-function > . > > And rejoice that LilyPond will have fewer stumbling blocks in the near > future. Or at least will be better at hiding the stumbling blocks so > you'll just get hit by them when digging deeper. > > -- > David Kastrup "I'm a random guy. I shake a hand and make a friend. I don't do egotistical things." – Vanilla Ice ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
variables for specific kinds of markup?
Hi all, I'm trying to create a variable to handle a certain type of markup text. For instance, I'd like percussion strikings to be in small caps above the staff, and what I really want is to define some sort of macro that replaces all instances of "\striking { theText }" with "^\markup\smallCaps { theText }". The following clearly doesn't work (much as I would like it to): striking = ^\markup\smallCaps From searching around, it seems like I need to define a function using scheme. I tried this: striking = #(define-music-function (parser location text) (string?) #{ ^\markup\smallCaps { #text } #}) ... and while the single line "\striking mallet" seems to render the word mallet as a smallCaps markup above a dummy staff, when I try to incorporate it into a series of notes, e.g.: {c'4 \striking mallet d'4 e'4 f'4 } I get an "error: unexpected post-event". What exactly does that mean? I did notice something close to what I want here: http://lilypond.org/doc/v2.19/Documentation/extending/new-markup-command-definition.en.html But it still would require me to put something like \markup\striking, as opposed to \striking. I'm pretty new to lilypond, so apologies if I've said something that betrays a lack of understanding. I guess I'd just mostly like to know what that "unexpected post-event" error means. Thanks in advance! Marc -- Marc Evans PhD Candidate in Music Composition at UCSB Stanford BA '10, Music; MA '11, Music, Science and Technology www.marcevansmusic.com --- "I'm a random guy. I shake a hand and make a friend. I don't do egotistical things." – Vanilla Ice ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Syntax Completion in Vim
There are many ways - putting all those words in a buffer (or :e $VIMRUNTIME/syntax/lilypond.vim or such), then ctrl-n might just work - write your own completion using viml or some glue code like https://github.com/MarcWeber/editor-cells which allows to mix multiple completion systems easily - you can even write them using Python - but requires some setup. - use templates such as snipmate and define snippets, then use the snippets engine's complete system. Eg compare snipmate (most simple) with UltiSnips or such also supporting nested placeholders - use ctags to generate tag files - eg using regex and complete based on those. lilypond allows includes, so the perfect completion system would follow those. Marc Weber ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: fisisis impossible?
Am 12.03.2018 1:50 nachm. schrieb Torsten Hämmerle :Marc Hohl wrote > This is on the issue tracker: > > https://sourceforge.net/p/testlilyissues/issues/3356/ Thank you, Marc, This 2013 issue (like this thread, too) may be related mainly to \chordmode,No. If LilyPond has no internal representation of triple signs, neither notes nor chords will work at all. but generally, it'd be nice to have triple flats/sharps in LilyPond. I've started working on the case. That's cool!Regards, Marc All the best, Torsten -- Sent from: http://lilypond.1069038.n5.nabble.com/User-f3.html ___ 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: fisisis impossible?
Am 10.03.2018 um 21:20 schrieb bart deruyter: Hi all, got in a situation, trying to describe the bis augmented chord in second inversion, which would contain fisisis in a slashed chord name. Lilypond returns an error, unexpected symbol, expecting tonicname pitch, which makes me believe that lilypond does not know triple sharps (isisis). Am I right? Are there solutions for this? This is on the issue tracker: https://sourceforge.net/p/testlilyissues/issues/3356/ Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Three simultaneous slurs
Oh sorry, it looks lie a tie between b-flat and b-flat, but the handwritten note heads could also be interpreted differently :)Am 21.02.2018 12:34 nachm. schrieb Andrew Bernard :Hi Marc,Actually not a tie. If it were, the next note would not have an accidental. It's a slur for vocal music. Sorry I did not explain the full context.Thanks.Andrew ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Three simultaneous slurs
The smallest "slur" in the picture is a tie, isn't it?The next bigger slur can be typeset directly, and the outmost slur is a PhrasingSlur IMHO.HTH, MarcAm 21.02.2018 11:56 vorm. schrieb Andrew Bernard :Referring to the attached image from the MS I am engraving, I have three simultaneous slurs going on.How can this be handled in lilypond 2.19.81 (or indeed any version)?Do I have to use a fake simultaneous voice to fudge the result?Andrew ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: endless tab?
Case 1: I set an arbitrary bar (the manual calls it "bar check") Because it is a *check*, not a bar line! You insert bars by \bar "|" or \bar "|." or whatever, no by the bar *check* symbol alone, that's quite a difference. Just my 2 ct, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: tie polyphony
Am 24.01.2018 um 09:31 schrieb Gianmaria Lari: Hello, In the following code \version "2.19.80" \fixed c' { r4 a b d' << {4 4 4 4} \\ c1 >> } ... I would like to tie the "a" with the very first chord 4. How I can do it? That's not a tie then. IIUC, you'll need a phrasing slur for this: \( \) HTH, Marc Thank you, Gianmaria ___ 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: reloading \set TabStaff.minimumFret = #x
Am 23.01.2018 um 15:26 schrieb bb: Is it possible to omit \set TabStaff.minimumFret = #x for a sequence of measures/bars? One can simply override the statement by defining a string for a note. I have a couple of bars in sequence that should be fingered below that minimumFret. The fingering of the tones of the following bars should again resdtricted above some value. I like to avoid defining the strings for a long sequence of notes. \unset TabStaff.minimumFret should do the trick HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: [OT] Linux Users
Am 18.11.2017 um 17:58 schrieb Jacques Peron: Linux, LilyPond, LuaLaTeX (and Gregorio for gregorian chant) here. To integrate LilyPond into LaTeX, I developped lyluatex <https://github.com/jperon/lyluatex>. Which is a great tool and IMHO easier to use than lilypond-book! Linux, LilyPond, LuaLaTeX/XeLaTeX here. Marc 2017-11-18 17:24 GMT+01:00 David Bellows <mailto:davebell...@gmail.com>>: I use Linux, Lilypond, LuaLaTeX, and Csound, editing all of it in emacs. This does seem like a pretty potent or at least popular combination. On Sat, Nov 18, 2017 at 8:18 AM, Sam Bivens mailto:sambiv...@gmail.com>> wrote: > I'm also a Linux user. For notation I use LilyPond (with Frescobaldi) > exclusively, and for any serious writing I use LaTeX. > > Although I use the lilyglyphs package in LaTeX, I've never gotten around to > using lilypond-book; instead I just autocrop my Lily PDFs and insert those > as floats. > > A quick question for others: I've used LilyPond a couple times on Mac, and > the compile times were horrendous. Are the compile times on Linux faster > than on other operating systems? (Unfortunately I can't remember what Mac OS > I used...) > > Sam > > ___ > lilypond-user mailing list > lilypond-user@gnu.org <mailto:lilypond-user@gnu.org> > https://lists.gnu.org/mailman/listinfo/lilypond-user <https://lists.gnu.org/mailman/listinfo/lilypond-user> > ___ lilypond-user mailing list lilypond-user@gnu.org <mailto:lilypond-user@gnu.org> https://lists.gnu.org/mailman/listinfo/lilypond-user <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: Invisible note lines?
Am 27.10.2017 um 18:25 schrieb bb: I interpret this to have to comment out one of the two \score blocks for printing and the other for to get the midi? or do I miss the point? No, you just put two score blocks in your .ly file. If one score block contains a \midi block and *no* layout block, there is no graphical output. See http://lilypond.org/doc/v2.18/Documentation/notation/creating-midi-files for clarification. HTH, Marc Regards BB Am 27.10.2017 um 18:07 schrieb Marc Hohl: Am 27.10.2017 um 18:04 schrieb bb: For a backing track I want a melody line and chords printed on a lead sheet - standard with lilypond. But a midi should have an aditional kickdrum/bassdrum for rhythm. The notes should not be visible on the lead sheet but to hear in the midi. Is it possible to add notes for midi but invisible on the print? Certainly I can assemble one lilypond file for the lead sheet and another one for the midi. But that is not really smart. It is not comfortable to have to change two lilypond files for corrections etc. You only need to include two \score commands in one lilypond file: \score { ... stuff to be printed ... } \score { ... same stuff without kick ... \midi { } } HTH, Marc Regards BB ___ 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
Re: Invisible note lines?
Am 27.10.2017 um 18:04 schrieb bb: For a backing track I want a melody line and chords printed on a lead sheet - standard with lilypond. But a midi should have an aditional kickdrum/bassdrum for rhythm. The notes should not be visible on the lead sheet but to hear in the midi. Is it possible to add notes for midi but invisible on the print? Certainly I can assemble one lilypond file for the lead sheet and another one for the midi. But that is not really smart. It is not comfortable to have to change two lilypond files for corrections etc. You only need to include two \score commands in one lilypond file: \score { ... stuff to be printed ... } \score { ... same stuff without kick ... \midi { } } HTH, Marc Regards BB ___ 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: \justify & break
I misread the mail, this is nonsense.Sorry for the noise.Am 05.10.2017 9:50 vorm. schrieb Marc Hohl :Am 05.10.2017 9:32 vorm. schrieb Gianmaria Lari :On 5 October 2017 at 09:28, Thomas Morley <thomasmorley65@gmail.com> wrote:2017-10-05 6:56 GMT+02:00 Gianmaria Lari <gianmarialari@gmail.com>: > On 5 October 2017 at 01:05, Thomas Morley <thomasmorley65@gmail.com> wrote: >> >> 2017-10-04 17:53 GMT+02:00 Gianmaria Lari <gianmarialari@gmail.com>: >> > On 4 October 2017 at 17:15, Malte Meyn <lilypond@maltemeyn.de> wrote: >> >> Am 04.10.2017 um 17:11 schrieb Gianmaria Lari: >> >>> >> >>> Is there any \break like command to avoid to use two \justify? >> >> >> >> >> >> Use \justify-string instead. Empty lines make line breaks: >> > >> > [...] >> > >> > Yes, I saw \justify-string and it works but I wonder if it existed >> > something >> > more natural, like a \break or a command with the lilypond syntax >> > (and >> > not scheme syntax with #). >> > >> > The reason I'm so picky it's because I'm thinking to the day when I will >> > suggest lilypond as engraving program to other persons. I will not >> > propose >> > it to programmers and would like to avoid (each time is possible) to use >> > special syntax that I have to explain etc. etc. >> > >> > Thank you, g. >> >> Well, you could do: >> >> \markup { >> \column { >> \line \bold \smallCaps { Note } >> \justify-string >> #"L'articolazione d'elezione per lo staccato è quella del braccio, o >> nel >> caso di parti rapide, del polso. \n >> Nello staccato, braccio, mano e dita sono un tutt'uno ed agiscono in >> modo >> compatto senza scomporsi e senza articolazioni intermedie." >> } >> } >> >> Ofcourse \n _is_ scheme-syntax ;) > > > Uhmm... in that case I prefer to use two consecutive \justify. But \n is > good to know. I will keep it in my arsenal :) Keep in mind: \n is valid input only as part of strings. > By the way why \justify-string use the scheme syntax and it is not a first > class citizen of lilypond language? > Thank you, g. Not sure what you mean. I don't know what a "first class citizen of lilypond language" might be.Why \justify-string use the scheme-syntax and not the lilypond syntax?You need scheme when using \n, otherwise an empty line works fine for separating paragraphs in \justify-string, no scheme needed.Marcg. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: \justify & break
Am 05.10.2017 9:32 vorm. schrieb Gianmaria Lari :On 5 October 2017 at 09:28, Thomas Morleywrote:2017-10-05 6:56 GMT+02:00 Gianmaria Lari : > On 5 October 2017 at 01:05, Thomas Morley wrote: >> >> 2017-10-04 17:53 GMT+02:00 Gianmaria Lari : >> > On 4 October 2017 at 17:15, Malte Meyn wrote: >> >> Am 04.10.2017 um 17:11 schrieb Gianmaria Lari: >> >>> >> >>> Is there any \break like command to avoid to use two \justify? >> >> >> >> >> >> Use \justify-string instead. Empty lines make line breaks: >> > >> > [...] >> > >> > Yes, I saw \justify-string and it works but I wonder if it existed >> > something >> > more natural, like a \break or a command with the lilypond syntax >> > (and >> > not scheme syntax with #). >> > >> > The reason I'm so picky it's because I'm thinking to the day when I will >> > suggest lilypond as engraving program to other persons. I will not >> > propose >> > it to programmers and would like to avoid (each time is possible) to use >> > special syntax that I have to explain etc. etc. >> > >> > Thank you, g. >> >> Well, you could do: >> >> \markup { >> \column { >> \line \bold \smallCaps { Note } >> \justify-string >> #"L'articolazione d'elezione per lo staccato è quella del braccio, o >> nel >> caso di parti rapide, del polso. \n >> Nello staccato, braccio, mano e dita sono un tutt'uno ed agiscono in >> modo >> compatto senza scomporsi e senza articolazioni intermedie." >> } >> } >> >> Ofcourse \n _is_ scheme-syntax ;) > > > Uhmm... in that case I prefer to use two consecutive \justify. But \n is > good to know. I will keep it in my arsenal :) Keep in mind: \n is valid input only as part of strings. > By the way why \justify-string use the scheme syntax and it is not a first > class citizen of lilypond language? > Thank you, g. Not sure what you mean. I don't know what a "first class citizen of lilypond language" might be.Why \justify-string use the scheme-syntax and not the lilypond syntax?You need scheme when using \n, otherwise an empty line works fine for separating paragraphs in \justify-string, no scheme needed.Marcg. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: How can I make a 7.9+.9- chord?
Am 28.09.2017 um 18:31 schrieb gumblex: [...]And how can I display this chord correctly in a ChordNames line? This is untested, but IIRC \once\override ChordName.text = \markup { ... } should work. ___ 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 can I make a 7.9+.9- chord?
Am 28.09.2017 um 18:31 schrieb gumblex: Dear list, I would like to write a "dis:7.9+.9-" chord in \chordmode. However, both in ChordNames lines and in scores, it appears to be a "dis:7.9-" chord. If I write "dis:7.9-.9+", it appears to be a "dis:7.9+" chord. This is a current restriction of LilyPond's chord handling abilities. You cannot use two alterations of the same interval. Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Header
Am 25.09.2017 um 20:37 schrieb Mario Moles: Hi lilyponders! How to make like in tha jpg? Please provide us some more informations. The jpg looks like a LaTeX document, so the commands used there do not apply for LilyPond. Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Draw line between fingerings, but how does this go?
Hello Pieter, I used the code in this thread: http://lilypond.1069038.n5.nabble.com/glissando-in-fingering-notation-td159875.html This works out of the box for almost all occurrences in my scores. HTH, Marc Am 25.09.2017 um 22:49 schrieb Pieter Terpstra: Dear readers, Trying to draw a line between the numbers, copied some code but don't know exactly what the commands do. Trying to raise the line so that it fits nicely between the ones but don't know how, have tried the \raise command here without success. Anyone? Thank you so much in advantage! \score { \relative c' { \time 2/4 \key d \minor 168168 } } ___ 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: restrain string numbers
Am 22.09.2017 4:51 nachm. schrieb bb :I want to restrain/omit string numbers in the score. But I need them to define because of the guitar tabs. How can I do that? \new Staff \with { \omit StringNumber } { ... your music }HTHMarc___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Fwd: coloring notes according harmonic function
Am 07.09.2017 um 21:20 schrieb Rita Composer: Dear David and other Experts, Unfortunately I couldn't really follow you. You have to use << \new Voice { \voiceOne ... } \new Voice { \voiceTwo ... } \new Voice { \voiceThree ... } >> The curly brackets { ... } are important, otherwise the first \new Voice ends directly after \voiceOne, and ... is treated as if \voiceOne was never set. HTH a bit, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Am 15.08.2017 um 10:15 schrieb David Kastrup: Marc Hohl writes: [...] For the record: First, I used the solution with grob-transformer, but then I found out that removing the grob completely yields to problems with glissando lines between fingerings, so I switched to the solution given above. Your description did not imply that you actually wanted to use that point for positioning purposes. However, I think glissandi are between noteheads rather than fingerings. It's conceivable that they try taking fingerings into account in some manner: in that case, it would make sense if they ignored empty stencils. Yes, of course. I wasn't aware of the implications either – putting glissando lines between fingerings is quite straightforward, but I had to use glissandoMap and some trickery to create a satisfactory result. My current project includes a book with a violin and a guitar staff, and an additional handout for guitar-only purposes with tablature added. My focus was primarily on the first part, which has to be finished in terms of the layout as soon as possible for the illustrator to start to draw the pictures to be added later. Therefore I missed the glissando line suddenly pointing to nowhere in the tablature part. Interestingly, I didn't see the spurious line on screen, but in a printoutthat I am currently using for practicing the guitar part that will be recorded in a couple of days. I don't know whether others have made similar experiences, but on screen nearly everything seems to look correct. At any rate, it is sort of amusing that your choice between two complex solutions hinges on whether they use point-stencil or empty-stencil internally: interchanging those two is not all that hard. At least Thomas documented his solution better. Well, IIRC you were the first who mentioned the recursion error (which I should have found myself – silly me). But I have to admit that Harm's solution works with scheme functions I understood at first glance, whereas the grob-transformer stuff was not that easy for me to cope with. Conclusion: the list is great, and the fact that there are multiple solutions to a problem makes it easier to find the most suitable workaround ;-) Regards, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Am 08.08.2017 um 12:35 schrieb Thomas Morley: 2017-08-08 11:46 GMT+02:00 Marc Hohl : [...] Hi Marc, your initial code had two problems, comments inline: \override Fingering.stencil = #(lambda (grob) (let* ((text (ly:grob-property grob 'text)) (stencil (if (equal? text "0") ;; to avoid the warning go for point-stencil ;; not empty-stencil point-stencil ;; return a stencil yourself, don't call the ;; property which is created by the stencil-prop ;; it's a cycle and I'm somewhat surprised it failed ;; not more spectaculary (ly:text-interface::print grob stencil)) For the record: First, I used the solution with grob-transformer, but then I found out that removing the grob completely yields to problems with glissando lines between fingerings, so I switched to the solution given above. Thanks a lot! Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Am 08.08.2017 um 18:44 schrieb David Kastrup: Marc Hohl writes: Am 08.08.2017 um 13:00 schrieb Thomas Morley: 2017-08-08 12:47 GMT+02:00 David Kastrup : You can do this by using [...] Nice one. I always forget about 'grob-transformer'. Missing bracket, tho' I wasn't aware of grob-transformer at all. And I am still unsure about what it does. I have read the doc string, though. It gives your function both the grob and the value (callbacks and unpure/pure containers already resolved) that _would_ get calculated without your override in place. That can be handy when your function just wants to modify the default, or if the default is only used sometimes. To use it, you don't need to know whether the default is a constant, a function, or an unpure/pure container. I see. Thanks for your explanation! Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Am 08.08.2017 um 13:00 schrieb Thomas Morley: 2017-08-08 12:47 GMT+02:00 David Kastrup : You can do this by using [...] Nice one. I always forget about 'grob-transformer'. Missing bracket, tho' I wasn't aware of grob-transformer at all. And I am still unsure about what it does. I have read the doc string, though. Thanks, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Am 08.08.2017 um 12:47 schrieb David Kastrup: Marc Hohl writes: I wanted to write a little callback to remove all occurrencies of "0" fingerings. This is what I got so far: \version "2.19.63" music = { c'4-3 d'-0 e'-2 f'-3 | g'1-0 } \score { \new Staff \with { \override Fingering.stencil = ^^^ #(lambda (grob) [...] (ly:grob-property grob 'stencil ^^ Compiling this nearly MWE, I get: Warning: Fingering has empty extent and non-empty stencil. Warning: Fingering has empty extent and non-empty stencil. And *no* fingering at all is shown in the resulting score. What am I doing wrong? Recursion: see Recursion. Ah, yes! I think I intermingled the idea to use Fingering.after-line-breaking (where stencil is already defined) and Fingering.stencil (to remove the stencil before any layout decisions are completed). Thanks for clarification! Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Remove all occurrencies of "0" fingerings
Hi Malte, Am 08.08.2017 um 10:30 schrieb Malte Meyn: Am 08.08.2017 um 10:23 schrieb Marc Hohl: I wanted to write a little callback to remove all occurrencies of "0" fingerings. This doesn’t empty the stencil but removes the Fingering grobs completely (by suicide): thanks for this solution! In my real-life example, I got lilypond: ../flower/include/drul-array.hh:35: T& Drul_array::at(Direction) [with T = scm_unused_struct*]: Zusicherung >>d == 1 || d == -1<< nicht erf?llt. Aborted (core dumped) but changing before-line-breaking to after-line-breaking did the trick. I do not fully understand why, but it works. Thanks, Marc \override Fingering.before-line-breaking = #(lambda (grob) (if (equal? (ly:grob-property grob 'text) "0") (ly:grob-suicide! grob))) ___ 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
Remove all occurrencies of "0" fingerings
Hello list! I wanted to write a little callback to remove all occurrencies of "0" fingerings. This is what I got so far: \version "2.19.63" music = { c'4-3 d'-0 e'-2 f'-3 | g'1-0 } \score { \new Staff \with { \override Fingering.stencil = #(lambda (grob) (let* ((text (ly:grob-property grob 'text)) (stencil (if (equal? text "0") empty-stencil (ly:grob-property grob 'stencil stencil)) } { \music } } Compiling this nearly MWE, I get: Warning: Fingering has empty extent and non-empty stencil. Warning: Fingering has empty extent and non-empty stencil. And *no* fingering at all is shown in the resulting score. What am I doing wrong? Regards, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Adding an introductory note(s)
Am 31.07.2017 um 17:27 schrieb Stephen Nesbitt: [...] 2) The inability to have more than one instance of partial. Fiddle tunes are often notated with pickups for the A & B sections. AFAIK, it is allowed to put a \partial in mid-piece since 2.19.11. HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Include file handling in lilypond-book
Am 12.07.2017 um 01:54 schrieb Karljurgen Feuerherm: Hello, Putting together an exercise book using XeLaTeX and the lilypond environment. Everything works relatively well until I try to use an include file with variable definitions. MWE: % !TEX encoding = UTF-8 Unicode % !TEX TS-program = LilyPond-Book % !LILYPOND tex = xelatex \documentclass{memoir} % \newcommand{\Ggrace}{\grace { g''32 }} \begin{document} \begin{lilypond} { \include "lilypond-variables.ly" I don't know if I remember correctly, but I think I stumbled upon this problem before. Have you tried to include a relative path? \include "./lilypond-variables.ly" ^^ HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: String Number collision
Hi Harm, Am 05.07.2017 um 23:21 schrieb Thomas Morley: Hi Marc, 2017-07-05 8:13 GMT+02:00 Marc Hohl : Hi list, I have the following MWE: [...] It causes the string number "5" to appear twice, strangely overlapping. I tried to move the New_fingering_engraver to Staff, but then I got side-axis not set for grob StringNumber. Not sure what you expected, I didn't explore the programming error, though. Well, I hoped that lilypond discardes one of two identical string-number events automatically. I assume that I have to create an engraver similar to the Merge_rests_engraver that does this job? Or is there another way apart from \once\hide StringNumber all the way across the file? You could do: #(define (suicide-duplicate-text-grobs grob-lst) "Walks through the sorted @var{grob-lst}, suiciding grobs with duplicate text" (if (null? (cdr grob-lst)) #f (suicide-duplicate-text-grobs (if (string=? (ly:grob-property (car grob-lst) 'text) (ly:grob-property (cadr grob-lst) 'text)) (begin (ly:grob-suicide! (car grob-lst)) (cdr grob-lst)) (cdr grob-lst) #(define reduce-string-numbers (lambda (grob) "Gets the PaperColumn-grob, filters for StringNumber-grobs, sorts this grobs with @code{stringlist (ly:grob-object paper-column 'elements (sorted-strgs (sort strgs (lambda (p q) (string8 ~ e''2. } down = { ~ c'2. } \score { << \new Staff << \new Voice \with { \deleteDuplicateStrings } { \voiceOne \up } \new Voice { \voiceTwo \down } >> \new TabStaff << \new TabVoice { \voiceOne \up } \new TabVoice { \voiceTwo \down } >> >> } Though, I think an engraver would probably do the job cheaper. (Not tested) Okay, thanks a lot for your solution! I'll check how it fits in my project. Regards, Marc HTH, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
String Number collision
Hi list, I have the following MWE: \version "2.19.60" up = { c'8\5 e'' ~ 2. } down = { c'4\5 ~ 2. } %{ uncomment this to trigger error \layout { \context { \Voice \remove "New_fingering_engraver" } \context { \Staff \consists "New_fingering_engraver" } } %} \score { \new Staff << \new Voice { \voiceOne \up } \new Voice { \voiceTwo \down } >> } It causes the string number "5" to appear twice, strangely overlapping. I tried to move the New_fingering_engraver to Staff, but then I got side-axis not set for grob StringNumber. up = { c'8 \5 e'' ~ 2. } I assume that I have to create an engraver similar to the Merge_rests_engraver that does this job? Or is there another way apart from \once\hide StringNumber all the way across the file? Note: I have to specify the sting in both voices since I use tablature too (ommitted in the MWE) and removing the string specification would yield in a erroneous tablature. Best regards, Marc \version "2.19.60" up = { c'8\5 e'' ~ 2. } down = { c'4\5 ~ 2. } %{ uncomment this to trigger error \layout { \context { \Voice \remove "New_fingering_engraver" } \context { \Staff \consists "New_fingering_engraver" } } %} \score { \new Staff << \new Voice { \voiceOne \up } \new Voice { \voiceTwo \down } >> } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: extra note
Am 15.06.2017 1:45 nachm. schrieb Rafael González :I am using \version "2.19.55" the following line, bar e,8 << b'' e >> << d a >> 16 b 8. g,16 a b d d b e' e |the attachment shows that, after compilation, I get an extra a16 after the second double stop, why? Lilypond seems to interpret the 16 as a single duration, because << ...>> is a closed _expression_.You should use < ...> instead.HTHMarcthank youRafaelγγγ ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: How to make vertical arrow between staves
Am 14.06.2017 1:15 nachm. schrieb Rutger Hofman :On 06/14/2017 12:47 PM, Marc Hohl wrote: > Am 14.06.2017 um 12:34 schrieb Rutger Hofman: >> Good morning list, > > [...] > > Does > > http://lsr.di.unimi.it/LSR/Item?id=962 > > what you want? > > Marc This LSR snippet uses VoiceFollower and Glissando. I cannot make it draw *vertical* lines/arrows, is there anything I overlook? I thought that this snippet allows for vertical arrows as well, but I was wrong. Sorry for the noise.Marc Rutger ___ 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 make vertical arrow between staves
Am 14.06.2017 um 12:34 schrieb Rutger Hofman: Good morning list, [...] Does http://lsr.di.unimi.it/LSR/Item?id=962 what you want? Marc Rutger Hofman Amsterdam ___ 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: opus conflict
Am 01.05.2017 um 09:55 schrieb Trevor Daniels: Thomas Morley wrote Monday, May 01, 2017 12:05 AM 2017-04-30 23:09 GMT+02:00 Mark Stephen Mrotek : [...] I have very limited knowledge as to how to customize (write Lilypond), [...] So here a little tutorial about writing custom book/scoreTitleMarkup Nicely done, Harm! +1 I really, really appreciate your detailed explanations and your time and effort that go into mails like these! Marc Trevor --- This email has been checked for viruses by AVG. http://www.avg.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: flip clef, key and time signature [Re: flip clef at end of line only]
Am 17.04.2017 um 13:47 schrieb Thomas Morley: 2017-04-17 13:35 GMT+02:00 Marc Hohl : Hi Harm, (ly:grob-set-property! grob 'space-alist '((staff-bar extra-space . 1)) Ah, that's the way to go here – thanks a lot for your brilliant solution! Can you explain why you use before-line-breaking? Does it make any difference to after-line-breaking? Well, I tried to affect _one_ grob with _one_ override. The stencil-override could be done directly or before-line-breaking or after-line-breaking. The 'space-alist needs to be set directly (with a _separate_ override) or 'before-line-breaking, it doesn't work sufficiently 'after-line-breaking. I see, thanks for clarification! Cheers, Marc Best, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: flip clef, key and time signature [Re: flip clef at end of line only]
Hi Harm, Am 16.04.2017 um 21:25 schrieb Thomas Morley: 2017-04-16 17:54 GMT+02:00 Marc Hohl : [...] I tried to go one step further and include the key signature and time signature in my example, see the attached code. [...] Hi Marc, how about below? [...] (ly:grob-set-property! grob 'space-alist '((staff-bar extra-space . 1)) Ah, that's the way to go here – thanks a lot for your brilliant solution! Can you explain why you use before-line-breaking? Does it make any difference to after-line-breaking? [...] For the BarNumbers you'll likely need an engraver ... I'll probably omit the BarNumbers completely, the piece I want to typeset is not very long – it's quite tedious and challenging to compose this way ;-) Thanks, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
flip clef, key and time signature [Re: flip clef at end of line only]
Am 15.04.2017 um 18:02 schrieb Malte Meyn: Am 15.04.2017 um 17:32 schrieb Marc Hohl: Hi list, I am working on a little piece that's played as written; after that, the musician has to turn the page upside down and play the resulting notes. I managed to get the clef displayed at the beginning and the end of each line, and I can flip the clef ;-) Unfortunately, overriding the Clef.stencil at the end of the line changes the apperance for the clef in the next line, too. You need before-line-breaking here so you can use the function ly:item-break-dir: \override Clef.before-line-breaking = #(lambda (grob) (if (equal? (ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil (lambda (grobb) (grob-interpret-markup grobb #{ \markup \translate #'(0 . 2) \flip \musicglyph #"clefs.G" #}) I tried to go one step further and include the key signature and time signature in my example, see the attached code. It works and looks quite ok (the spacing between the flipped sharp and the 3/4 is a little too wide), but I get a lot of errors: Programmierfehler: No spacing entry from Item to `clef' Fortsetzung, die Daumen drücken and one line like this: Programmierfehler: No spacing entry from TimeSignature to `key-signature' Fortsetzung, die Daumen drücken I searched in the sources and assume that I have to enhance the space-alist entries in the concerning grobs, but I do not have a clue about the first error message, so any help is highly apprechiated. Happy Easter! Marc \version "2.19.0" #(define-markup-command (flip layout props arg) (markup?) (interpret-markup layout props (markup #:concat (#:null #:scale (cons -1 -1) #:line (arg) global = { \time 3/4 \key g \major \repeat unfold 4 { s2. * 4 | \break } \time 3/4 } melody = { \repeat unfold 16 { c'4 4 4 } } \layout { \context { \Score \override BreakAlignment.break-align-orders = ##((left-edge ambitus breathing-sign time-signature key-cancellation key-signature clef staff-bar custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos)) } \context { \Staff explicitKeySignatureVisibility = ##(#t #f #t) explicitClefVisibility = ##(#t #f #t) \override Clef.break-visibility = ##(#t #f #t) \override KeySignature.break-visibility = ##(#t #f #t) \override Clef.after-line-breaking = #(lambda (grob) (if (equal? (ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil (lambda (grobb) (grob-interpret-markup grobb #{ \markup \translate #'(0 . 2) \flip \musicglyph #"clefs.G" #}) \override KeySignature.after-line-breaking = #(lambda (grob) (if (equal? (ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil (lambda (grobb) (ly:stencil-translate-axis (ly:key-signature-interface::print grobb) -4 Y) \override TimeSignature.after-line-breaking = #(lambda (grob) (if (equal? (ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil (lambda (grobb) (ly:stencil-scale (ly:time-signature::print grobb) -1 -1) } } \score { \new Staff << \global \melody >> } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: flip clef at end of line only
Am 15.04.2017 um 18:02 schrieb Malte Meyn: Am 15.04.2017 um 17:32 schrieb Marc Hohl: Hi list, I am working on a little piece that's played as written; after that, the musician has to turn the page upside down and play the resulting notes. I managed to get the clef displayed at the beginning and the end of each line, and I can flip the clef ;-) Unfortunately, overriding the Clef.stencil at the end of the line changes the apperance for the clef in the next line, too. You need before-line-breaking here so you can use the function ly:item-break-dir: \override Clef.before-line-breaking = #(lambda (grob) (if (equal? (ly:item-break-dir grob) LEFT) (ly:grob-set-property! grob 'stencil (lambda (grobb) (grob-interpret-markup grobb #{ \markup \translate #'(0 . 2) \flip \musicglyph #"clefs.G" #}) Thanks a lot! Just for clarification: after-line-breaking seems to work here, too – is there a special reason to use before-line-breaking? I added the translate in the markup to bring the clef to the correct vertical position. Yep – I removed it for MWE reasons :) Cheers, Marc ___ 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: flip clef at end of line only
Am 15.04.2017 um 18:11 schrieb Son_V: Hi list, I am working on a little piece that's played as written; after that, the musician has to turn the page upside down and play the resulting notes. I'm sorry, I'm just adding noise, but the thing you're working on seems interesting for me. I remember that JS Bach made some work of this kind, some palindromes too. There is Mozarts "Der Spiegel", where two players play simultaneously, one reads the sheet in the right way, the other one upside down. I can point you to a work (nothing to do with music) by Gustave Veerbek: http://2.bp.blogspot.com/-ytAqPVXoRDM/UIXIEydfLKI/HwA/tnbOsi1iI4o/s1600/UD%2BI.bmp Wow, that's interesting! Have an happy Easter. Happy Easter to you, too! Cheers, Marc -- View this message in context: http://lilypond.1069038.n5.nabble.com/flip-clef-at-end-of-line-only-tp202312p202314.html Sent from the User mailing list archive at Nabble.com. ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
flip clef at end of line only
Hi list, I am working on a little piece that's played as written; after that, the musician has to turn the page upside down and play the resulting notes. I managed to get the clef displayed at the beginning and the end of each line, and I can flip the clef ;-) Unfortunately, overriding the Clef.stencil at the end of the line changes the apperance for the clef in the next line, too. --- \version "2.19.0" #(define-markup-command (flip layout props arg) (markup?) (interpret-markup layout props (markup #:concat (#:null #:scale (cons -1 -1) #:line (arg) global = { \repeat unfold 4 { s1 * 4 | \once\override Staff.BarLine.allow-span-bar = ##t \once\override Staff.Clef.stencil = #(lambda (grob) (grob-interpret-markup grob #{ \markup\flip\musicglyph #"clefs.G" #})) \break } } melody = { \repeat unfold 16 { c'4 4 4 4 } } \layout { \context { \Staff explicitKeySignatureVisibility = ##(#t #f #t) explicitClefVisibility = ##(#t #f #t) \override Clef.break-visibility = ##(#t #f #t) \override KeySignature.break-visibility = ##(#t #f #t) } } \score { \new Staff << \global \melody >> } --- Is there an easy way to detect whether the clef is actually at the end of a line, so that I can write (in pseudo-code) if (at-end-of-line) rotate the clef else print the clef fi Thanks in advance, Marc \version "2.19.0" #(define-markup-command (flip layout props arg) (markup?) (interpret-markup layout props (markup #:concat (#:null #:scale (cons -1 -1) #:line (arg) global = { \repeat unfold 4 { s1 * 4 | \once\override Staff.BarLine.allow-span-bar = ##t \once\override Staff.Clef.stencil = #(lambda (grob) (grob-interpret-markup grob #{ \markup\flip\musicglyph #"clefs.G" #})) \break } } melody = { \repeat unfold 16 { c'4 4 4 4 } } \layout { \context { \Staff explicitKeySignatureVisibility = ##(#t #f #t) explicitClefVisibility = ##(#t #f #t) \override Clef.break-visibility = ##(#t #f #t) \override KeySignature.break-visibility = ##(#t #f #t) } } \score { \new Staff << \global \melody >> } ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: How to read a error message?
Am 14.03.2017 um 08:49 schrieb Scoutladen - Ralph Fröhlich: Hi, hope to find some informations here about reading error messages Example: Processing `.../file.ly' Parsing... .../file.ly:16:30: error: unrecognized string, not in text script or \lyricmode fis8 fis fis fis d d d4 g ( h) h h8 h8 .../file.ly:16:33: error: unrecognized string, not in text script or \lyricmode fis8 fis fis fis d d d4 g (h) h h8 h8 Where can I find a short description? I cannot answer this in general, but this looks like using german note names without declaring it first. Do you have \language "deutsch" stated in your input file? HTH, Marc Best regards Ralph ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: ANN: Frescobaldi 2.20.0, Frescobaldi 3.0.0, python-ly 0.9.5
I get this error when I run Frescobaldi 3.0.0 on Windows 7. On Tue, Mar 7, 2017 at 3:46 PM, Klaus Blum wrote: > Thanks to everyone who helped to make this wonderful tool available for > Windows as well! > > However... I installed Frescobaldi 3.0.0 with the provided Windows > installer, and instead of the music view, I get a simple "Could not load > the > popplerqt5 module". > Sorry if this is a stupid question, but I have absolutely no clue: > What do I have to do to have this available in Windows? Any installation > informations are related to Linux. > > Thanks for any help, > Klaus > > > > > -- > View this message in context: http://lilypond.1069038.n5. > nabble.com/ANN-Frescobaldi-2-20-0-Frescobaldi-3-0-0-python- > ly-0-9-5-tp200225p200849.html > Sent from the User mailing list archive at Nabble.com. > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: LilyBin embedded [WAS: New LilyPond website]
Using a subdomain as proposed (live.lilypond.org), the whole lilybin stuff could be outsourced to a different server ... finding someone who provides this possibility/server is another story.But I like the "try it!" approach very much.MarcAm 22.02.2017 10:49 vorm. schrieb Phil Holmes : We have a policy of not using server CPU for processing on lilypond.org, because it's donated to us at no cost - so I don't think lilybin could be hosted on the lilypond.org site. --Phil Holmes - Original Message - From: tisimst To: lilypond-user@gnu.org Sent: Tuesday, February 21, 2017 4:55 PM Subject: Re: LilyBin embedded [WAS: New LilyPond website] On Mon, Feb 20, 2017 at 9:41 AM, Phil Holmes-2 [via Lilypond] <[hidden email]> wrote: Lilypond.org gets around 700 sessions per day, according to Google analytics. --Phil Holmes - Original Message - From: [hidden email] To: [hidden email] ; [hidden email] Cc: [hidden email] ; [hidden email] Sent: Monday, February 20, 2017 3:58 PM Subject: Re: LilyBin embedded [WAS: New LilyPond website] I'm primarily responsible for LilyBin. A year or so ago, Timothy Gu (copied) and I got LilyPond running in AWS Lambda, which should be able to handle plenty of traffic. I get 266,667 seconds of free computation time per month from Amazon. We used 38,094 seconds in January for 18,398 requests, meaning we should be able to handle—very roughly estimating—100,000 more requests per month. How many visitors does lilypond.org get? The LilyBin UI isn't made to be embeddable, but could be made so. I'd probably recommend just wiring up CodeMirror and PDF.js yourself rather than trying to show LilyBin in an iframe. I'll be happy to work with you if you want a LilyBin-powered demo on the home page! I love the idea of being able to let visitors try out LP code right there when browsing the home page. I wonder if a dedicated subdomain (e.g., live.lilypond.org) would be more appropriate? Here's what I'm thinking. Each LP example in the docs has a real source file associated with it, right? So,... 1. Put LilyBin functionality at live.lilypond.org 2. Put all the doc's source files in a directory structure that the new site can access (ideally, through a web-navigate-able directory tree) 3. Place a "Try this live!" link next to each score example in the docs (or the image hyperlink) that points to the specific file in #2 that the visitor can play around with (but can't save over), rather than just linking to a plain text file This is a wish list, of course, but could be a very cool feature for new/potential users wanting to get their feet wet. Best, Abraham View this message in context: Re: LilyBin embedded [WAS: New LilyPond website]Sent from the User mailing list archive at Nabble.com. ___lilypond-user mailing listlilypond-user@gnu.orghttps://lists.gnu.org/mailman/listinfo/lilypond-user ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: markup functions
this works: #(define-markup-command (instruct layout props text) (markup?) (interpret-markup layout props #{ \markup \italic \magnify #0.7 #text #})) mkTenor = \markup { \instruct "tenor"} \relative c' { d1-\mkTenor } =Marc On Sat, Feb 18, 2017 at 9:52 AM, Rob Torop wrote: > > I have a bunch of repeated things like this > >d f \mark \markup \italic \magnify #0.7 "(tenor & trp.)" r16 > > where I put a little instruction over the melody > > I'd like to have a little function to call instead of \mark \markup > \italic \magnify #0.7 "blah", with the "blah" as a parameter. > > So I tried this > > #(define-markup-command (instruct layout props text )(markup?) >(intepret-markup layout props >#{ > \markup \italic \magnify #0.7 #text >#})) > > and then put this in my code > > d f \mark \instruct "(tenor & trp.)" r16 > > > But it doesn't like it! > > I am sure this is very easy, and maybe I should be using a music-function > instead of the markup command definition. > > Can someone help me? > > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: ANN: Frescobaldi 2.20.0, Frescobaldi 3.0.0, python-ly 0.9.5
Thank you for your work. Will you provide a .dmg file for MacOS? On Fri, Feb 17, 2017 at 4:58 AM, Wilbert Berendsen wrote: > Dear friends, > > I just released the source packages for Frescobaldi 2.20.0, Frescobaldi > 3.0.0 and python-ly 0.9.5 today. (I couldn't way until my birthday early > March :-)) > > Frescobaldi 2.20.0 provides a new Manuscript viewer, contributed by > Urs Liska and Peter Bjuhr, some smaller features, improvements, updated > translations and bug fixes. > > Frescobaldi 3.0.0 is feature-wise the same, but requires Python3 and > Qt5. Qt5 has support for Retina displays and gestures, and Frescobaldi > 3.0.0 already uses them, which should provide a better Music View image > quality. Thanks to David Rydh for implementing this! > > Frescobaldi 3.x is the branch (master) where new development will be > done. > > Development of Frescobaldi 2.x (branch v2.x) concentrates on bugfixing > and backporting important features that can be backported from the 3.x > branch, supporting older platforms that do not provide Python3 or Qt5. > > Python-ly 0.9.5 has seen some bug fixes and improvements, and is > recommend to use, although Frescobaldi works well with 0.9.4. > > Thanks go to all the translators and contributors! > Enjoy! > > Wilbert > > https://pypi.python.org/pypi/python-ly > https://github.com/wbsoft/frescobaldi/releases > > > -- > Wilbert Berendsen (www.wilbertberendsen.nl) > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: New LilyPond website
+ 1 to include lilybin not just a link but include the ability to try lilypond directly from the browser without having to open another window. Like the Haskell or like the ruby lang website ( https://www.ruby-lang.org/en/ see the link on the right "Try Ruby") . 2 user stories 1. a ) as a visitor with Javascript enabled, I see a lilypond expression " c d e f g a b c'" on the left and on the right i can see the result that was generated. 1. b) as a visitor with Javascript enabled, I can change the lilypond expression and automatically the score on the right is updated. 2) as a visitor with Javascript disabled, I can browse the lilypond site, Instead of seeing the "lilybin" expression i can see an example or another image, or an invitation to go to lilybin.com lilybin.com could be included into the official website as part of its new design. Something like "Try it - Type Haskell expressions in here" in Haskell website https://www.haskell.org/ On Thu, Feb 9, 2017 at 9:24 PM, John Roper wrote: > in total. After enabling scripts this problem vanishes. >> >> In Vivaldi I don't see the background image at the top of the page at all. >> > > I test using all major browsers including Vivaldi (my main browser) and I > am not getting any of these issues. > > -- > John Roper > Freelance Developer and Simulation Artist > Boston MA, USA > http://jmroper.com/ > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
example(s) of the power of Lilypond
Lilypond is a very powerful music score writing software. Today examples of this power are buried in the documenation. I'd like to see featured on the website, examples of the power of Lilypond. To select the best or most useful, I'd like to ask the community what is/ are your best example(s) of the power of Lilypond? Are there examples from the documentation or from the LSR ( Lilypond Snippet Repository: http://lsr.di.unimi.it/LSR/Browse) that demonstrate how lilypond enables users to write music in a shorter amount of time or write complex music that would be more difficult to write in other music notation software? -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: New LilyPond website
First, I want to thank John for his contribution. The new design looks more modern and gives a feeling that lilypond's community is alive. I deal with UI at work on a daily basis and no two persons will agree on the look and feel of a website of application. So IMHO we should focus on making sure that the new website template mechanism can integrate with lilypond's development flow. For writing music, I alternate between MuseScore and Lilypond. What makes me come back to lilypond is the power of the text interface and scripting capabilities. And let's not forget Frescobaldi. I had written a MacOS app for lilypond and I know how much work it is. So one think I'd like to see more visible in the lilypond website is the power of Lilypond's scripting capabilities. I'd like to see featured examples from the LSR ( Lilypond Snippet Repository: http://lsr.di.unimi.it/LSR/Browse) that show examples that are difficult or would take more time to write in other music notation software. I'll ask the list for their input and may be some response could be featured. PS: on the home page of the new website , we can read "Excellent Classical Engraving". I'd like to replace "Classical" something else: One suggestion: "Free Music Score Engraving " - Professional Some notes on the new layout: 1) The favicon.ico file is missing 2) the header takes too much real estate that could be used to feature some key I'd suggest to put everyone's feedback or action items in a google sheet for everyone to easily review, stay up to date. Google sheets or another similar system will be helpful for prioritizing the feedback. -Marc On Thu, Feb 9, 2017 at 10:49 AM, Simon Albrecht wrote: > On 09.02.2017 08:35, Mats Behre wrote: > >> On 2017-02-09 07:41, Werner LEMBERG wrote: >> >>> . I like the sans-serif font more that you've used in the previous >>>version. Please restore it. >>> >> I would actually recommend not specifying a specific font at all. This >> leaves the font selection to the user (and we will not have to debate the >> choice endlessly ...). >> > > I disagree. The choice of font conveys a lot of meaning, and we wouldn’t > want the website to make a bad (or misleading) impression just because the > browser by default uses a hideous font and the user didn’t bother to change > that. > > Best, Simon > > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Experience with several import filters
abc2ly: I use it from time to time to convert Celtic tunes. It works but converts the chords as markup and starting from scratch in lilypond happens to be faster. On Tue, Jan 3, 2017 at 7:23 PM, Noeck wrote: > Hi, > > > midi2ly > > I used it for freely licensed scores on cpdl or imslp which are not > created in LilyPond and too ugly to use in a choir. Sometimes midi files > are published together with the pdf or the proprietary format. The > result was never usable directly (all voices in one staff without > collision-avoidance/voice-association, no or bad lyrics, wrong key, > scaled durations, i.e. a4*234/128 s4*22/128 instead of a2 - the latter > problem might by fixed by finding an appropriate quanization). > > The problems ranged from ly files that are easily fixed to some cases > where it was much faster to rewrite everything from scratch. I guess it > depends on the application writing the midi file. I never systematically > cared about that. > > Summary: Most of the time, midi2ly gave me a file from which I could > extract single voices, fix some errors and put them into my own ly > skeleton and it was worth having the tool. > > Cheers, > Joram > > ___ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user > -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Ties across voices
Am 13.12.2016 um 11:11 schrieb Peter Toye: Urs, Andrew, Simon Thank you all very much for the solutions. I now have 4 ways to create what I need! My next task - to get ties across enharmonics, which I gather is impossible and I have to use slurs. There is a regtest for this, so it looks as if lilypond accepts ties between enharmonic notes at least since 2.19.16. \version "2.19.16" \header { texidoc = " LilyPond should accept a tie between notes which are enharmonically identical. " } \score { { \time 3/4 \repeat unfold 3 { cis'4~ des' } } \layout { ragged-right = ##t } %\midi {} } HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Non-lyric text in lyrics
Am 05.12.2016 12:38 nachm. schrieb Tom Cook :I've googled for this, and looked through the lilypond snippets repository, and can't find anything.I'm trying to insert instructions mixed up with lyrics. Actually its just the name of the singer, but the name changes half-way through and changing vocalName doesn't seem to do the right thing.I use \set stanza = "Alice: "... Lyrics for Alice ...\set stanza = "Bob: "... Lyrics for Bob ...\set stanza = "both: "... Lyrics for both ...for such situations.HTH, Marc .___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
hide time signature in markup command
i use a shorthand mark up command to insert music snippets into text. See below definition "WriteScore" I'd like to add a command to hide the time signature \override Staff.TimeSignature #'stencil = ##f In scheme the command should be something like this : (make-music 'OverrideProperty 'pop-first #t 'grob-value #f 'grob-property-path (list (quote stencil)) 'symbol 'TimeSignature Where can this be inserted? %= % WRITE SCORE % %= #(define-markup-command (writeScore layout props music) (ly:music?) (let ((score (ly:make-score music)) (score-layout (ly:output-def-clone $defaultlayout))) ;; possibly, change some settings in the \layout block %(ly:output-def-set-variable! score-layout 'indent 0) ;; add the \layout block to the score (ly:score-add-output-def! score score-layout) (interpret-markup layout props (markup #:score score) ) )) snippet = { c d e} \markup { "Example:" \writeScore \snippet } -- -- Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: InstrumentName on right side
Hi Harm, I cannot help with the instrument name problem, but ... Anyway, to give an imprssion a pdf is attached. This is impressive! Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Am 13.09.2016 um 22:41 schrieb Thomas Morley: [...] 2016-09-13 8:33 GMT+02:00 Marc Hohl : I hope to find the source somewhere to provide you a scan of how it should look like. Would be great. I finally found some examples, but the bend arrows are not quite "convincing" ... Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Help required with tuplets
Am 19.10.2016 um 08:14 schrieb Bernhard Kleine: Hi, I do not see what is wrong with the following extract which is compilable but totally wrong. I think you misunderstood the way \tuplet works: \tuplet 3/2 is the way to go, because you want *3* notes to last as long as *2* notes normally do. HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Trouble Combining Repeats and Closing Bars in tunes
Am 18.10.2016 um 05:24 schrieb Ben Beeson: Hi, I am looking at a 4 - part tune where the first and third parts are repeated and the second and fourth parts are not repeated. Try as I may, I cannot get Lilypond to put the repeats and closing bars in the right place when engraving the tune. The following is just about as simple as I can get it and still show the issue. If you use \repeat volta 2 { ... } and then put a \bar "..." command afterwards, this bar command overrides the repeat bar line – so in fact, the line is repeated internally for lilypond, but you can't see it. In this case, you'll have to define your own repeat bar line at the beginning of your document: #(define-bar-line ":|.-.|" ":|." ".|" "|.") and use it like this: \repeat volta 2 { ... } \bar ":|.-.|" \bar "|." The way lilypond deals internally with repeats versus explicitly given barlines is not optimal yet :-( HTH, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Am 04.10.2016 um 10:58 schrieb David Kastrup: Thomas Morley writes: warning: no notes to start a bend from found. If you want to bend an open string, consider override/tweak like: TabNoteHead.bend-me = ##t Hm, this text needs fixing, per current default open strings can't serve as start _or_ end of a bend. What about bending from behind the nut? And of course, on a number of electric guitars you have the infamous whammy bar... That's true, but I think that it is a sensible default setting to exclude open strins *if* there are ways to enable that feature. Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: Start of the first row of a staff
Am 21.09.2016 um 08:19 schrieb Marco Bagolin: Hello all, please, I need a help because I don't find a solution in the snippet repository. I need that the first line of the staff is aligned as subsequent lines, NOT as the attached example. Does \paper { indent = 0 } Do what you mean? Or am I misunderstanding your request? Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Hi Harm, Am 18.09.2016 um 12:38 schrieb Thomas Morley: Hi Marc, 2016-09-13 22:41 GMT+02:00 Thomas Morley : 2016-09-13 8:33 GMT+02:00 Marc Hohl : The dashed line would also be great in cases like those: c'\3\startBend d'\3\stopBend~ d'\3 % bend up, no release, bent note is tied c'\3\startBend d'\3\stopBend~ d'\3~ d'\3\startBend c'\3\stopBend % bend up, bent note is tied, release Looks doable, I'll probably try the upcoming weekend. Done. Great! Want the changed/extended code to play around with it? I am a bit short of time at the moment, fiddling around with some details of my latest theater project ... and starting teaching soon as well ... I'd prefer to solve that slow down first, otoh it's little effort to do a new tarball. If the estimated work on the slowdown is not that huge, I think it is ok to get a grip on that first and release a new version afterwards. Cheers, Marc Cheers, Harm ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Hi Harm, Am 14.09.2016 um 23:00 schrieb Thomas Morley: [...] In general I'd vote for those shortcuts, but to fall back to the basic commands if needed. I had some time to re-think my basic approach ... maybe you are right and I think way too complicated in terms of taking each string into account. Working with different TabVoices is probably easier in most cases. Some years ago I had long discussions on the devel list concerning the implementation of a string-bend-engraver (that would have had to be done in C++ at this time), especially with Carl Sorensen, and we came to the conclusion that a bend event is something that happens *to a certain string*, therefore it is possible to bend a string, keep it bent, bend another one, release it and then release the first bent string again. This is rather complicated stuff, but some guitarists do stuff of this kind ;-) I partly disagree, you can bend a single string or an EventChord (speaking lilypondish), meaning all strings are bended starting at the same musical moment ending at another but same musical moment for all strings. This is supported already. Ok, this was probably a misunderstanding: I can either bend one string or many strings at once, but you can manipulate the strings independently ... as you proved with your concept of using distinct TabVoices, this works already. [...] So I may be wrong, scans of printed TabStaffs would help me a lot. still searching ... ;-) Additionally, I'm not sure, whether we _should_ make every style available, though. My limited inside lets me think every tab-editor creates his own style ad hoc and on the fly... Well, my concerns were not about styles, but about usability. You convinced me that going for different TabVoices is the way to go! [...] The result: they never bothered to learn reading notes. :(( Yes, that's true. Ofcourse you know, tabs _do_have disadvantages: choosing other strings for fingerings require a _new_ tab , polyphonics are always difficult to print. To mention the most prominent ones... Therefore I go for a combination of normal Staves and TabStaff, and I am responsible for the current behaviour of the TabStaff: numbers only, no stems and stuff ;-) Cheers, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: calculation of the total duration of a score
Hi Jan-Peter, Am 16.09.2016 um 08:40 schrieb Jan-Peter Voigt: Hi Marc, nice to hear, that you have a workflow. For the record I noted two things in the file. (And if there's some spare time, I might further work on it.) Thanks for the continuing work on that issue! 1. The durations are tagged by score and stored in an a-list, so you can first collect durations in multiple scores and display them later with a score-unique tag. The tagging works fine, but as soon as I have a layout block in the \score creating the exact midi file, lilypond prints it :-( Moving the callback from \layout {} to \midi {} yields to Programming error: Cannot find key `scoreBACH' in alist, setting to `0'. So I still have to use my solution with the auxiliary files, which is no problem at all. > 2. There are acknowledgers for volta-brackets and barlines. It should > be possible to use that information for acknowledging volta repeats > and ajusting the duration accordingly. Those grobs are created by > engravers, but if one creates the barlines *not* with \repeat volta, > but with \bar ".|:", it should be acknowledged too. This sounds promising, but IMHO it would be easier to get the engraver to work somehow on a \score with a \midi { } block only and transferring the duration to another \score. Cheers, Marc Cheers Jan-Peter Am 15.09.2016 um 08:10 schrieb Marc Hohl: Am 14.09.2016 um 14:24 schrieb Marc Hohl: [...] I thought of writing the duration to a external file to be read from within the markup call in the score to be printed, but did not follow this route any further yet. Update: a simple test file shows that this works. I can - compute the total duration of a file designed for midi output only by means of your engraver - write the duration to a file and - read that string while processing the "print-only" file. Merging that stuff together with some Makefile should be straightforward, I hope ;-) And it has the advantage that some MIDI-related changes do not appear in the printed score, but the duration will be updated accordingly. Cheers, Marc ___ 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: calculation of the total duration of a score
Am 14.09.2016 um 14:24 schrieb Marc Hohl: [...] I thought of writing the duration to a external file to be read from within the markup call in the score to be printed, but did not follow this route any further yet. Update: a simple test file shows that this works. I can - compute the total duration of a file designed for midi output only by means of your engraver - write the duration to a file and - read that string while processing the "print-only" file. Merging that stuff together with some Makefile should be straightforward, I hope ;-) And it has the advantage that some MIDI-related changes do not appear in the printed score, but the duration will be updated accordingly. Cheers, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Hi Harm, Am 13.09.2016 um 22:41 schrieb Thomas Morley: [...] Even if I wouldn't want to take one I'm forced to: my regular job started after summer-break :(( For me, too :( And -as ever– the TODO list for doing stuff within the summer break is still not completely done. [...] The customization features are great! Also, I like the dashed line of the pre-pend-hold use cases. [...] Looks doable, I'll probably try the upcoming weekend.# Great! [...] Well, we can't expect a user to find his way to this coding, maybe some predefined function, will do it!? I hope to find the source somewhere to provide you a scan of how it should look like. Would be great. Still searching ... --- Another idea/thought/proposal: IIUC, the engraver does not take the string numbers into account. I think this would be a good feature from a user's point of view: c'\startBend d'\stopBend\startBend c'\stopBend could then probably be simplified to c'\3\startBend d'\3 c'\3\stopBend You may have noticed the file bend-music-functions.ly being remarkable short. Coding shortcuts and appending them to the bend-music-functions-file is on the TODO Something at the lines of: [...] This is a very first shot, more a proof-of-concept... This is possible, but I don't think that shortcuts are sufficient here. Some years ago I had long discussions on the devel list concerning the implementation of a string-bend-engraver (that would have had to be done in C++ at this time), especially with Carl Sorensen, and we came to the conclusion that a bend event is something that happens *to a certain string*, therefore it is possible to bend a string, keep it bent, bend another one, release it and then release the first bent string again. This is rather complicated stuff, but some guitarists do stuff of this kind ;-) [...] I considered it already. Though, the engraver mimics the behaviour of TextSpanner. And you can't start a TextSpanner inside EventChord. I didn't figure how to do it different. We discussed about that as well ;-) I tried to follow the slur engraver, but this is one of the more complicated engravers, so I finally gave up ;-) Technically speaking, the mimics of the slur engraver seem ideal if you see it as a per-string basis: you cannot have two simultaneous bends on one string, but you can bend each string independently. I have a suspicion about the slow down... Will test as soon as I have some spare time, though it's a highly complex and huge coding. Sometimes I feel like touching the limits of my current coding skills. Proceeding means to do all very carefully and thoroughly and _not_ in any hurry ;) Of course! As already said, I was working on the concept of a string-bend-engraver for about 1 1/2 years or so, and the ideas and concepts are still (mostly) available. I'd be glad to help you with this task, but some private messages in German language could be perhaps more effective here ... ;-) [...] Although, guitar-player myself I never use TabStaff rofl My pupils are fond of tablatures, easy available, easy to understand ... And trying to write down a contemporary guitar solo with normal staves only is a bit of a nightmare ;-) Cheers, Marc ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: calculation of the total duration of a score
Hi Jan-Peter, Am 14.09.2016 um 13:18 schrieb Jan-Peter Voigt: Hi Marc, I am busy today, so I will look into your example later. No problem! In short: Repeats are not taken into account right now. Yes. Therefore I used the \unfoldRepeats/\midi-combination, but the duration computed in one \score is not visible in the other one. I thought of writing the duration to a external file to be read from within the markup call in the score to be printed, but did not follow this route any further yet. I thought of a factor, that is set, when a repeat starts. But I don't know yet, how to deal with alternatives and repeats with more than two loops. Probably the engraver might look for barlines. Still it needs to recognize alternatives with its possible repetitions (e.g. 1-3). I don't know whether it is doable to implement the stuff that \unfoldRepeats does within the engraver. Detecting the beginning and the end of a repeated section should not be that hard, but the bookkeeping is probably tricky in terms of alternatives, as you pointed out. We'll crack that nut :-) Sounds probising, thank you very much! Marc Jan-Peter Am 14. September 2016 12:03:43 MESZ, schrieb Marc Hohl : Hi Jan-Peter, ok, so I played around with your engraver. It does exactly what it needs to do, but somehow I am not able to get everything to work. I'll try to explain: Let's say that I have some music: music = { ...stuff... \repeat volta 2 { ... more stuff ... } } and want it displayed nicely: \score { \new Staff { \music } } If I include your engraver here, the calculated time is wrong, because the repeats are not taken into account. So I go for the midi-block \score { \new Staff { \unfoldRepeats \music } \midi { \context { \Score \consists ...your code here ... } } } But it looks like the duration variable is visible within its score only, see the attached compilable example. How can I obtain the correct duration in combination with a compact score? Thanks in advance, Marc Am 13.09.2016 um 10:24 schrieb Jan-Peter Voigt: Hi Marc, you already received some solutions, but I stumbled across this thread and just want to quickly show my engraver - perhaps it also helps. It doesn't read repeats right now, but this may be solved with \unfoldRepeats and the engraver placed in the midi-block. The duration-markup-command relies on a global variable and a delayed stencil - this will not work with multiple scores, as only the duration of the last score will be displayed. But that is manageable, if needed. HTH Jan-Peter Am 05.09.2016 um 11:01 schrieb Marc Hohl: Hi list, I have a couple of songs in my latest theatre project. It would be nice to have something like "duration: 3'22''" at the end of each song. Doing this by hand is straightforward:I generate a midi file that sounds accurate and let it play by timidity – but IMHO it would be less tedious and less error-prone if lilypond were capable of doing these calculations itself. Tempo indications and meter changes have to be taken into account, so this is probably doable with a special engraver only IIUC. Has someone else already done something like this? I have no experience in writing scheme engravers, so any hint would be highly appreciated. Thanks in advance, Marc 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 -- 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: calculation of the total duration of a score
Hi Jan-Peter, ok, so I played around with your engraver. It does exactly what it needs to do, but somehow I am not able to get everything to work. I'll try to explain: Let's say that I have some music: music = { ...stuff... \repeat volta 2 { ... more stuff ... } } and want it displayed nicely: \score { \new Staff { \music } } If I include your engraver here, the calculated time is wrong, because the repeats are not taken into account. So I go for the midi-block \score { \new Staff { \unfoldRepeats \music } \midi { \context { \Score \consists ...your code here ... } } } But it looks like the duration variable is visible within its score only, see the attached compilable example. How can I obtain the correct duration in combination with a compact score? Thanks in advance, Marc Am 13.09.2016 um 10:24 schrieb Jan-Peter Voigt: Hi Marc, you already received some solutions, but I stumbled across this thread and just want to quickly show my engraver - perhaps it also helps. It doesn't read repeats right now, but this may be solved with \unfoldRepeats and the engraver placed in the midi-block. The duration-markup-command relies on a global variable and a delayed stencil - this will not work with multiple scores, as only the duration of the last score will be displayed. But that is manageable, if needed. HTH Jan-Peter Am 05.09.2016 um 11:01 schrieb Marc Hohl: Hi list, I have a couple of songs in my latest theatre project. It would be nice to have something like "duration: 3'22''" at the end of each song. Doing this by hand is straightforward:I generate a midi file that sounds accurate and let it play by timidity – but IMHO it would be less tedious and less error-prone if lilypond were capable of doing these calculations itself. Tempo indications and meter changes have to be taken into account, so this is probably doable with a special engraver only IIUC. Has someone else already done something like this? I have no experience in writing scheme engravers, so any hint would be highly appreciated. Thanks in advance, Marc ___ 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 \version "2.19.47" %%% engraver definitions % format seconds as min:sec #(define-public (format-time dur) (let* ((minutes (floor (/ dur 60))) (seconds (round (- dur (* 60 minutes)) ) )) (format "~2'0d:~2'0d" (inexact->exact minutes) (inexact->exact seconds)) )) % complete duration of score - set after finalizing duration = 0 % markup command to display complete time #(define-markup-command (duration layout props)() (let* ((gauge-stencil (interpret-markup layout props "00:00")) (x-ext (ly:stencil-extent gauge-stencil X)) (y-ext (ly:stencil-extent gauge-stencil Y))) (ly:make-stencil `(delay-stencil-evaluation ,(delay (ly:stencil-expr (interpret-markup layout props (format-time duration)) ))) x-ext y-ext) )) calc-duration-engraver = #(lambda (context) (let ((dur 0) ; duration in seconds (start (ly:make-moment 0)) ; last calc-time the duration was calculated ) ; function to calculate duration in seconds since last calc-time (define (calc-dur) (let ((diff (ly:moment-sub (ly:context-now context) start) ) ; moment since last calc-time (tempo (ly:context-property context 'tempoWholesPerMinute (ly:make-moment 60/4)) )) ; current tempo (set! start (ly:context-now context)) ; set calc-time (set! dur ; add 60*(diff/tempo) to duration ; if tempo is 120 BPM and 120/4 elapsed, ; we have 60 * 120/4 * 4/120 = 60 seconds (+ dur (* 60 (exact->inexact (ly:moment-main (ly:moment-div diff tempo))) ))) dur )) (make-engraver (listeners ((tempo-change-event engraver event) (calc-dur) ; calculate duration on every tempo-change-event (new tempo will be set after we listened to the event) (ly:message "duration: ~A" (format-time dur)) ) ) ; listeners ((finalize trans) (calc-dur) ; last calculation of duration (set! duration dur) ; set global duration (for the markup command) (ly:message "duration: ~A final" (format-time dur)) ) ))) %%% actual music example music = { \tempo 4 = 60 c'4 c' c' c' \rep
Re: calculation of the total duration of a score
Hi Jan-Peter, seems to do exactly what I need, so thanks for sharing ... I'll give it a try tomorrow, when I have some time to work on my project again. Cheers, Marc Am 13.09.2016 um 10:24 schrieb Jan-Peter Voigt: Hi Marc, you already received some solutions, but I stumbled across this thread and just want to quickly show my engraver - perhaps it also helps. It doesn't read repeats right now, but this may be solved with \unfoldRepeats and the engraver placed in the midi-block. The duration-markup-command relies on a global variable and a delayed stencil - this will not work with multiple scores, as only the duration of the last score will be displayed. But that is manageable, if needed. HTH Jan-Peter Am 05.09.2016 um 11:01 schrieb Marc Hohl: Hi list, I have a couple of songs in my latest theatre project. It would be nice to have something like "duration: 3'22''" at the end of each song. Doing this by hand is straightforward:I generate a midi file that sounds accurate and let it play by timidity – but IMHO it would be less tedious and less error-prone if lilypond were capable of doing these calculations itself. Tempo indications and meter changes have to be taken into account, so this is probably doable with a special engraver only IIUC. Has someone else already done something like this? I have no experience in writing scheme engravers, so any hint would be highly appreciated. Thanks in advance, Marc ___ 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: BendSpanner-engraver
Hi Harm, hi list, I did some simple tests and looked through the code in more detail: --- The customization features are great! Also, I like the dashed line of the pre-pend-hold use cases. The dashed line would also be great in cases like those: c'\3\startBend d'\3\stopBend~ d'\3 % bend up, no release, bent note is tied c'\3\startBend d'\3\stopBend~ d'\3~ d'\3\startBend c'\3\stopBend % bend up, bent note is tied, release --- In my archives, I found a real-world-example that does not (yet) work: < g'\3 b'\2 >4\startBend < a'\3 c''\2 >\stopBend\startBend < g'\3 b'\2 >2\stopBend It is not that easy to play on guitar, but the lower string is raised by two semitones, whereas the upper string is raised by one semitone. I hope to find the source somewhere to provide you a scan of how it should look like. --- Another idea/thought/proposal: IIUC, the engraver does not take the string numbers into account. I think this would be a good feature from a user's point of view: c'\startBend d'\stopBend\startBend c'\stopBend could then probably be simplified to c'\3\startBend d'\3 c'\3\stopBend if the engraver internally takes care of each string seperately. I don't know how hard an implementation would be, but tied notes on a certain string can be detected automatically, so the dashed "keep this note bent"-line replaces a tied note. Perhaps the slow-down in the bend::remove-certain-tab-note-heads routine can be avoided if bend events are handled specifically for certain strings: < g\3~ b\2~ fis'\1\startBend > < g\3 \b\2 g'\1\stopBend > --- I do hope my feedback does not sound too negative, this is a huge amount of work you have done for us guitar players! Thanks a lot! Cheers, Marc Am 11.09.2016 um 18:36 schrieb Marc Hohl: Hi Harm, I did not have much time to fully test it, but wow. This is awesome! Kudos to you! I'll give a more detailed report after some tests, but this may take a while. Cheers, Marc Am 11.09.2016 um 11:53 schrieb Thomas Morley: Hi all, as result of my private None-Google-Summer-of-Code, I'd like to announce a BendSpanner-engraver. It's based on our scheme-text-spanner.ly from the reg-test and the fabulous work of Marc Hohl and his bend.ily Thanks, to Stephen MacNeil who provided a couple of images from printed editions. A new grob, BendSpanner, is defined. Line-breaks, skylining, dashed line for 'pre-bend-hold and a lot more work out of the box. It's highly customizable. In the demo some possibilities are demonstrated. More in the test-files. Currently it works only for TabStaff, coding something for default-Staff/Voice is on the TODO-list. Though, currently it's pretty slow in compilation. The reason for this slugginess is the feature not to bend open strings and to ex- or include notes to bend, more precisley it's the definiton for `bend::remove-certain-tab-note-heads'. Not sure how to improve this, any hint is highly appreciated. Ofcourse this is the first time the code is made public. I expect several not yet noticed bugs or missing features. Please report back. Cheers, 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 ___ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user
Re: BendSpanner-engraver
Hi Harm, I did not have much time to fully test it, but wow. This is awesome! Kudos to you! I'll give a more detailed report after some tests, but this may take a while. Cheers, Marc Am 11.09.2016 um 11:53 schrieb Thomas Morley: Hi all, as result of my private None-Google-Summer-of-Code, I'd like to announce a BendSpanner-engraver. It's based on our scheme-text-spanner.ly from the reg-test and the fabulous work of Marc Hohl and his bend.ily Thanks, to Stephen MacNeil who provided a couple of images from printed editions. A new grob, BendSpanner, is defined. Line-breaks, skylining, dashed line for 'pre-bend-hold and a lot more work out of the box. It's highly customizable. In the demo some possibilities are demonstrated. More in the test-files. Currently it works only for TabStaff, coding something for default-Staff/Voice is on the TODO-list. Though, currently it's pretty slow in compilation. The reason for this slugginess is the feature not to bend open strings and to ex- or include notes to bend, more precisley it's the definiton for `bend::remove-certain-tab-note-heads'. Not sure how to improve this, any hint is highly appreciated. Ofcourse this is the first time the code is made public. I expect several not yet noticed bugs or missing features. Please report back. Cheers, 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