Re: \RemoveEmptyStaves removes Dynamics context

2018-05-08 Thread Thomas Weber
Malte and Simon - I didn't have the opportunity to try your suggestions yet, 
but just wanted to say thanks for helping!


Am 07.05.2018 um 01:21 schrieb Simon Albrecht:
> On 06.05.2018 23:03, Malte Meyn wrote:
>> Am 06.05.2018 um 22:35 schrieb Thomas Weber:
>>> Can anybody help me with keeping the dynamics alive?  Many thanks!
>>>
>>> […]
>>>
>>> \layout {
>>>    \context {
>>>  \Score
>> Replace \Score by \Staff here.
>>>  \RemoveEmptyStaves
>>>  \override VerticalAxisGroup.remove-first = ##t
> In case you’re using any version starting from 2.19.36, you can replace the 
> above two lines by
> \RemoveAllEmptyStaves
>
> Best, Simon
>
> ___
> 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


\RemoveEmptyStaves removes Dynamics context

2018-05-06 Thread Thomas Weber
Can anybody help me with keeping the dynamics alive?  Many thanks!


dynamics = {s1\p}
music = {c'1}

\layout {
  \context {
    \Score
    \RemoveEmptyStaves
    \override VerticalAxisGroup.remove-first = ##t
  }
}

\score {
  <<
    \new Staff \music
    \new Dynamics \dynamics
  >>
}



___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: DynamicText.X-offset in StaffGroups

2018-05-05 Thread Thomas Weber
Am 05.05.2018 um 11:23 schrieb Malte Meyn:
> • or \override DynamicText.extra-spacing-width = #empty-interval for the 
> lowest Staff in a StaffGroup. 


That is very useful to know!  Also when the dynamics would actually cross a 
barline in combination with whiteout:

violinIIa = \relative c'' {
  r16 fis-. fis'-. fis,-. fis'-. r r8 |
  r4
  \once \override DynamicText.X-offset = #-4
  \once \override DynamicText.Y-offset = #3
  d8\pp^\markup "pizz." r |
  r4 e8 r |
}

violinIIb = \relative c'' {
  r16 fis-. fis'-. fis,-. fis'-. r r8 |
  \once \override DynamicText.X-offset = #-4
  \once \override DynamicText.extra-spacing-width = #empty-interval
  \once \override DynamicText.whiteout = ##t
  g,2~-.\upbow \pp |
  g2-. |
}

\score {
  <<
    \time 2/4
    \new StaffGroup <<
  \new Staff \partcombine \violinIIa \violinIIb
  \new Staff \partcombine \violinIIa \violinIIb
    >>
  >>
}


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Need someone testing XML file in Finale and Sibelius (and Dorico)

2018-05-05 Thread Thomas Weber

  
  
Sibelius 8.1.1 creates exactly the same beaming.


Am 05.05.2018 um 09:38 schrieb Robert Blackstone:
> Hi Urs,
> 
> This is what your file produces with Finale 2024.5, on a MacBook with
> OSX 10.9.5.
> 
> 
> 
> (I should have compressed it a bit.)
> 
> Best regards,
> 
> Robert Blackstone
> 
>> Hi,
>> 
>> I'm trying to add support to python-ly for exporting manual beams
>> to MusicXML.
>> 
>> I managed to export the commands to start and end a beam, but
>> that's not sufficient. In theory
>> (https://usermanuals.musicxml.com/MusicXML/Content/EL-MusicXML-beam.htm)
>> the beaming pattern is described in detail in MusicXML, and when I
>> export something from MuseScore this is also what I get.
>> 
>> I don't see it as reasonable to properly implement this in the
>> python-ly exporter (at least for now) because that would
>> essentially mean re-implementing the whole beaming-pattern code
>> from LilyPond (which even isn't fully correct either).
>> 
>> However, I realized that when I have the beam start and end encoded
>> by python-ly and then (so far manually) add
>> 
>> continue
>> 
>> to each note, regardless of the actual beaming pattern situation,
>> MuseScore will correctly import the XML file (and add the correct
>> encoding when re-exporting to XML).
>> 
>> While I know this is not a correct export I think it would be a
>> good start and in any case better than nothing. But I would like to
>> know what the other programs will do with the code.
>> 
>> So I'd be happy if people could import the attached .xml file to
>> Finale, Sibelius and (if possible) Dorico, and tell me about the
>> results. Also attached is the reference image of what it should
>> look like. (Note that the .xml is manually tweaked at this point).
>> 
>> TIA Urs
>> 
>> <05-beam.xml><05-beam.png>___
>>
>> 
lilypond-user mailing list
>> lilypond-user@gnu.org 
>> https://lists.gnu.org/mailman/listinfo/lilypond-user
> 
> 
> 
> ___ lilypond-user mailing
> list lilypond-user@gnu.org 
> https://lists.gnu.org/mailman/listinfo/lilypond-user



  



05-beam - Full Score.pdf
Description: Adobe PDF document
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


DynamicText.X-offset in StaffGroups

2018-05-05 Thread Thomas Weber
Hi all,

when I compile the below example with 2.18.2, I get the output that I want - 
the "pp" below the staff is offset as expected. When I compile with 2.19.54, 
more unnecessary space is created after the barline to avoid that the dynamic 
crosses below the barline.  (See attached images.)

Is this a bug or a feature?  It only happens in StaffGroups.  This might make 
sense to avoid barlines within the StaffGroup, but not below the StaffGroup.

Best
Thomas


P.S.: From which git branch can I compile the current state of 2.19?  The 
download links for the compiled binaries are broken: 
http://lilypond.org/development.html#Download-4



violinIIa = \relative c'' {
  r16 fis-. fis'-. fis,-. fis'-. r r8 |
  r4
  \once \override DynamicText.X-offset = #-4
  \once \override DynamicText.Y-offset = #3
  d8\pp^\markup "pizz." r |
  r4 e8 r |
}

violinIIb = \relative c'' {
  r16 fis-. fis'-. fis,-. fis'-. r r8 |
  \once \override DynamicText.X-offset = #-4
  g,2~-.\upbow \pp |
  g2-. |
}

\score {
  <<
    \time 2/4
    \new StaffGroup {
  \new Staff \partcombine \violinIIa \violinIIb
    }
  >>
}

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Double time signature when there are grace notes

2017-02-11 Thread Thomas Weber

Am 11.02.2017 um 13:51 schrieb Thomas Morley:


Arnold has put up some work to get a more automagic workflow.

http://lsr.di.unimi.it/LSR/Item?id=990
http://lsr.di.unimi.it/LSR/Item?id=978

IIRC his work is not finished, so you probably will need to fall back
to grace-spacers sometimes...




This actually solves my problem - thanks for pointing me there!  I'm relieved 
there is an existing fix.

This looks like it should be the standard behaviour of Lilypond. Can anybody 
tell how the chances are of integrating this into off-the-shelf Lilypond?  
Would be really convenient.

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Double time signature when there are grace notes

2017-02-10 Thread Thomas Weber

Am 10.02.2017 um 23:48 schrieb Jacques Menu Muzhic:

Not a bug, but a feature : you have to add graces in all voices :




I already realized that:



Le 10 févr. 2017 à 23:23, Thomas Weber <t...@notabit.eu> a écrit :

* I can add a "grace space" to the bottom staff



But I tried to avoid this for the following reasons:



* The staffs won't work standalone ([...] broken spacing).
* I have to analyze all other staffs when writing out one staff.




How would you actually do this e.g. in an orchestral work where you want to 
create score and parts from the same data without distorting the spacing where 
invisible graces were added?  Would you work with tags to remove the invisible 
graces?

Best
Thomas

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Double time signature when there are grace notes

2017-02-10 Thread Thomas Weber

Dear all,


I need help with the following situation:


\version "2.19.54"

<<
{
  c'1
  \break
  \time 15/16
  \grace a'16 b'2...
}

{
  R1
  \break
  \time 15/16
  c'2...
}
>>


This results in the attached output.  Is that a bug or is this supposed to be 
encoded differently?  There are dirty workarounds:

* I can fix it by removing the \time from the bottom staff.
* I can add a "grace space" to the bottom staff[1]

Both solutions have the following disadvantages I want to avoid:

* The staffs won't work standalone (missing time signature or broken spacing).
* I have to analyze all other staffs when writing out one staff.

I'm looking for a reliable solution that works well for auto-generating 
Lilypond code.


Highly appreciating any help on this,
Thomas Weber


[1] https://lists.gnu.org/archive/html/lilypond-user/2004-08/msg00258.html

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Find out denominator of current time signature

2017-01-12 Thread Thomas Weber

11.01.2017 um 18:46 schrieb Malte Meyn:

You can get the duration from the context property timeSignatureFraction
or baseMoment:

%
\version "2.19.53"

{
   \time 12/8
   \applyContext
   #(lambda (context)
  (display (ly:context-property
 context
 'baseMoment)))
 %'timeSignatureFraction)))
}
%

I don’t know how you can make a music function that uses this and
returns music. \applyContext #(lambda (context) (make-music …)) has no
visible output. But maybe it’s a start.




That's definitely going into the right direction - many thanks. I tried this:


\new Staff <<
  {
c'4 d'4 e'4 f'4
  }
  {
\applyContext
  #(lambda (context)
(make-music
  'SkipEvent
  'articulations
(list (make-music
  'AbsoluteDynamicEvent
  'text
  "ff"))
  'duration
(ly:make-duration 0 0 1 (cdr (ly:context-property
  context
  'timeSignatureFraction)
  }
>>


which is apparently valid, but the created skip event is not inserted into the 
music (which your reply already suggested).  I guess the problem boils down to 
how to get hold of the context without \applyContext.

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Find out denominator of current time signature

2017-01-11 Thread Thomas Weber

Dear all,

I wonder how I can create a duration that is so to say exactly one time 
signature denominator long (e.g. an eigth in 6/8, a quarter in 4/4 etc.).  I 
thought something like this would work:

  #(make-music
  'SkipEvent
  'duration
  (ly:make-duration 0 0 1 (ly:moment-main-denominator ???))
  'articulations
  (list (make-music
  'AbsoluteDynamicEvent
  'text
  "ff")))

Lacking experience, I don't know whether ly:moment-main-denominator is the 
thing to go for here and if so, what argument to supply.

The background is automatic generation of Lilypond input code where it is 
non-trivial to find out the time signature for the code generator, so I hoped 
it would be possible to write out some Scheme code that will defer that task to 
Lilypond.

Many thanks
Thomas


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Building Lilypond on Ubuntu 16.04

2016-09-21 Thread Thomas Weber
Thanks for bringing me on track, Werner.  I was able to solve the problem in a 
quick and dirty manner, however it would be useful to learn how to solve it 
properly.

What I did was:

$ sudo ln -s /usr/include/freetype2/freetype/config 
/usr/include/freetype2/config
$ sudo sed -i 's|/freetype2$|/freetype2/freetype|' 
/usr/lib/x86_64-linux-gnu/pkgconfig/freetype2.pc
$ ./configure
$ make

Which gives me a working lilypond 2.19.49.  What I didn't try previously was 
the first step, i.e. the symbolic link to the config folder.


Am 21.09.2016 um 10:59 schrieb Werner LEMBERG:
>
> You still don't tell us what lilypond version you are compiling.  


You're right.  I tried compiling the current master branch.


> And
> the interesting data is not the make output but the data in
> `config.log' that protocols how the build system got configured.
>


O.K., so I attached the full log (that's from the unmodified .pc file).  Here 
are the lines with "freetype" in them:

$ grep freetype config.log
configure:9267: result: -I/usr/include/pango-1.0 -I/usr/include/harfbuzz 
-I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2
configure:9273: result: -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 
-lfontconfig -lfreetype
configure:9307: g++ -c   -O2 -finline-functions -g -pipe 
-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7  
-fno-strict-aliasing -g -fstack-protector-strong  -g -fwrapv  
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/include/freetype2 conftest.cpp >&5
configure:9307: g++ -E -I/usr/include/python2.7 
-I/usr/include/x86_64-linux-gnu/python2.7  -fno-strict-aliasing -g 
-fstack-protector-strong  -g -fwrapv  -I/usr/include/pango-1.0 
-I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2 
conftest.cpp
configure:9319: g++ -o conftest   -O2 -finline-functions -g -pipe 
-I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7  
-fno-strict-aliasing -g -fstack-protector-strong  -g -fwrapv  
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include 
-I/usr/include/freetype2  conftest.cpp -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 
-lglib-2.0 -lfontconfig -lfreetype -ldl  >&5
configure:9409: result: -I/usr/include/freetype2
configure:9415: result: -lfontconfig -lfreetype
configure:9513: checking for freetype2 >= 2.1.10
configure:9524: result: -I/usr/include/freetype2
configure:9530: result: -lfreetype
FONTCONFIG_CFLAGS='-I/usr/include/freetype2'
FONTCONFIG_LIBS='-lfontconfig -lfreetype'
FREETYPE2_CFLAGS='-I/usr/include/freetype2'
FREETYPE2_LIBS='-lfreetype'
PANGO_FT2_CFLAGS='-I/usr/include/pango-1.0 -I/usr/include/harfbuzz 
-I/usr/include/pango-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2'
PANGO_FT2_LIBS='-lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 
-lfontconfig -lfreetype'


>>  I tried changing the line "Cflags: -I${includedir}/freetype2" to
>> "Cflags: -I${includedir}/freetype2/freetype", but the headers are
>> still not found.
> Pfft, don't change this file!  It was installed during a `make
> install' of the FreeType library.  If you have a different FreeType
> library installed, then you have *another* `freetype2.pc' file.
> Search that.


This is a pretty clean and fresh system, I didn't install anything outside of 
the package manager.  All I got was:

$ LANG=C sudo find / -name 'freetype2.pc'
find: './run/user/1000/gvfs': Permission denied
./usr/lib/x86_64-linux-gnu/pkgconfig/freetype2.pc


> It might be possible to change the order of directories searched by
> pkg-config.  You can do that by modifying the `PKG_CONFIG_PATH'
> environment variable.  More details can be found in pkg-config's
> manpage.
>
> Have a look at the output of
>
>   pkg-config --debug 2>&1 | less
>
> and search for `freetype'; this shows you what pkg-config finds where.


$ pkg-config --debug 2>&1 | grep freetype
File 'freetype2.pc' appears to be a .pc file
Will find package 'freetype2' in file 
'/usr/lib/x86_64-linux-gnu/pkgconfig/freetype2.pc'

That's the very freetype2.pc file I modified to make things work.

Could that mean the package libreetype6-dev has a broken .pc file (because 
Cflags should point to a different folder)?  These are the .pc and .h files it 
installs:

$ dpkg-query -L libfreetype6-dev | grep -E '(\.pc$)|(\.h$)'
/usr/lib/x86_64-linux-gnu/pkgconfig/freetype2.pc
/usr/include/freetype2/freetype/ftcid.h
/usr/include/freetype2/freetype/ftmodapi.h
/usr/include/freetype2/freetype/fttrigon.h
/usr/include/freetype2/freetype/ftoutln.h
/usr/include/freetype2/freetype/ftglyph.h
/usr/include/freetype2/freetype/ftincrem.h
/usr/include/freetype2/freetype/fterrors.h

Re: Building Lilypond on Ubuntu 16.04

2016-09-21 Thread Thomas Weber
Thanks for your reply, Werner.  What I did is the following:


$ git pull ; LANG=C make all | tail
Already up-to-date.
make[1]: *** No rule to make target '/usr/include/freetype2/freetype.h', needed 
by 'out/vaticana-ligature.o'.  Stop.
make: *** [all] Error 2
make[2]: Entering directory '/home/tom/devel/lilypond/scripts/build'
true
make[2]: Leaving directory '/home/tom/devel/lilypond/scripts/build'
make[1]: Leaving directory '/home/tom/devel/lilypond/scripts'
make[1]: Entering directory '/home/tom/devel/lilypond/flower'
true
make[1]: Leaving directory '/home/tom/devel/lilypond/flower'
make[1]: Entering directory '/home/tom/devel/lilypond/lily'
make[1]: Leaving directory '/home/tom/devel/lilypond/lily'
/home/tom/devel/lilypond/stepmake/stepmake/generic-targets.make:6: recipe for 
target 'all' failed


Am 21.09.2016 um 08:39 schrieb Werner LEMBERG:
>
> However, if you use
> either the `freetype-config' script or the `freetype2.pc' file for
> pkg-config tool to specify the header include directory, together with
> proper header macros like FT_FREETYPE_H in the source code, nothing
> should change for compilation.


Pardon my ignorance - how would I have to use freetype-config or how would I 
have to manipulate freetype2.pc?  I tried changing the line "Cflags: 
-I${includedir}/freetype2" to "Cflags: -I${includedir}/freetype2/freetype", but 
the headers are still not found.

Thomas

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Building Lilypond on Ubuntu 16.04

2016-09-21 Thread Thomas Weber
When I try to "make" Lilypond on Ubuntu 16.04, the freetype headers are 
expected to be located in /usr/include/freetype2/.  That's also where Ubuntu's 
package libfreetype6-dev used to put them, at least in Ubuntu versions 14.04 to 
15.10, but in 16.04 (also 12.04, interestingly), it's in 
/usr/include/freetype2/freetype/.  Hence, a symbolic link won't work and I'm 
not too eager to mess with a folder hierarchy that should be left under control 
of the package manager.

Is there a command line option for make that I can supply to point it to the 
directory where the headers actually are?

Thanks!
Thomas

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: rehearsal marks: separate from content encoding and display above strings

2016-08-12 Thread Thomas Weber
Am 12.08.2016 um 17:29 schrieb Mark Knoop:
> At 16:30 on 12 Aug 2016, Thomas Weber wrote:
>
>> Secondly, how can I make rehearsal marks appear both on the very top
>> staff and the top staff of the strings?  As far as I can see,
>> rehearsal marks will always be put at the very top staff.
> See this snippet http://lsr.di.unimi.it/LSR/Item?id=1010 which defines
> a custom context to achieve this. 
>
> Note this currently doesn't work well in a frenched score as the
> MarkLine context can't know if the staves below it are still alive.
> However I have just submitted a potential fix for this, see here
> https://codereview.appspot.com/308910043/ for its progress.
>

It's of course essential that rehearsal marks don't disappear when the score is 
frenched.  So thanks a heap for working on this!

Thomas


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


rehearsal marks: separate from content encoding and display above strings

2016-08-12 Thread Thomas Weber
There are two things about rehearsal marks in orchestral scores I'd like to 
know about.

Firstly, how can I separate rehearsal marks (and other structural stuff like 
\break or \pageBreak) from the actual musical content?  Can I somehow add a 
virtual staff to carry the rehearsal mark information?  I think I remember 
seeing something like that before, but I can't seem to find any documentation 
about it.

Secondly, how can I make rehearsal marks appear both on the very top staff and 
the top staff of the strings?  As far as I can see, rehearsal marks will always 
be put at the very top staff.

Thanks!
Thomas

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Forcing a DynamicText to appear inside the staff

2016-08-11 Thread Thomas Weber
Am 10.08.2016 um 23:44 schrieb Simon Albrecht:
>  
> Am 10.08.2016 um 19:13 schrieb Thomas Weber:
>
> > in old orchestral scores one can observe that engravers did not hesitate to 
> > make more room in dense situations by moving dynamics into the staff rather 
> > than putting them below (or above).
>
>
> I mostly work on choral scores, where the problem might even be more imminent 
> due to the lyrics. And I very much think allowing dynamics to overlap with 
> the staff is a good idea, so I’ve been facing this a lot and made many essays 
> at writing a music function that is easy to use (easy to understand and easy 
> to type), versatile, and well maintainable. Unfortunately I haven’t found a 
> satisfactory solution yet, and I can’t delve into the subject more right now. 
> So I’m sorry to provide no more help at the moment except for this issue 
> tracker link: <https://sourceforge.net/p/testlilyissues/issues/4316/>. Some 
> of the problems encountered are mentioned there.


What kind of essays are you talking about (anything other than the issue you 
linked to)?

I think a scheme function would be useful that determines how much it needs to 
offset the dynamic to the left in order to move it into the staff.  Optionally 
it might also determine by itself by how much it should move it into the staff. 
 Ideally, it would detect whether there is a tight vertical spacing situation 
that could be mitigated by moving the dynamic, but that might be beyond what 
Scheme can do.  I think Urs posted something related on the dev list or 
somewhere else some months ago, but I can't find it right now.

Thomas

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Forcing a DynamicText to appear inside the staff

2016-08-10 Thread Thomas Weber
Am 10.08.2016 um 20:33 schrieb Robin Bannister:
> Thomas Weber wrote:
>> But Lilypond insist on keeping the dynamic outside of the staff.
>
> Try
> {
>   \override Staff.DynamicLineSpanner  #'outside-staff-priority = ##f
>   \override Staff.DynamicText #'X-offset = -4
>   \override Staff.DynamicLineSpanner #'Y-offset = 0
>   c' \f
> }


Great, that works!  What does ##f actually stand for?

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Forcing a DynamicText to appear inside the staff

2016-08-10 Thread Thomas Weber
Hi all,

in old orchestral scores one can observe that engravers did not hesitate to 
make more room in dense situations by moving dynamics into the staff rather 
than putting them below (or above).  To achieve the same effect, I tried the 
following:


{
  \once \override Staff.DynamicText #'X-offset = -4
  \once \override Staff.DynamicText #'Y-offset = 3
  c' \f
}


But Lilypond insist on keeping the dynamic outside of the staff.  I'm not an 
experienced Lilypond user, so I'm most likely missing something.  How can I 
achieve this effect?  (And are there counterparts to X-offset and Y-offset that 
allow specifying an absolute position?  At least staff-position does not seem 
to work.)

Thanks
Thomas W.

___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user