Re: openLilyLib website

2020-02-23 Thread mason
On 02/22, Urs Liska wrote:
> Am Freitag, den 21.02.2020, 18:52 -0800 schrieb ma...@masonhock.com:
> > Do you want something similar [Sphinx][1] or [Doxygen][2]?  
> 
> Yes, something similar, but IISC these tools (which I had of course
> taken notice of earlier) are limited to their set of languages.

Yes, that's right.  I wasn't recommending those tools, just confirming
that you are looking for something similar.

> Craig Dabelstein did some research and suggested NaturalDocs (
> https://www.naturaldocs.org/) which looks nice and suitably
> extensible/configurable for our purpose. I'm a little bit wary about
> the fact that it's a project with a single contributor, and I know what
> I'm talking about ...
> (also I *think* it would be good to have a Python-based tool because it
> might be easier to extend and to integrate with the other stuff.
> 
> > Are the
> > source files in Scheme, Lilypond, or a combination of both?
> 
> Of course both.
> The end-user interface is usually LilyPond, but the functionality is 
> all LilyPond, Scheme-in-LilyPond, and Scheme-in-Scheme-files.

Huh.  I thought it would be easier to find a good documentation
generator for Scheme, but after searching for a while everything I found
appears to have gone unmaintained for at least a few years (which I'm
guessing is what you're afraid could happen with NaturalDocs?), and
other than NaturalDocs I couldn't find anything that supports
configuration for arbitrary languages.


signature.asc
Description: PGP signature


Re: openLilyLib website

2020-02-21 Thread mason
On 02/20, Urs Liska wrote:
> What I really *want* to have but have no idea so far how to achieve is
> additional code/API documentation retrieved from the actual source
> files. There should be a tool to retrieve that from comments (or actual
> signatures?), resulting in either HTML or Markdown documentation that
> can be automatically integrated in the "manual-style" documentation.

Do you want something similar [Sphinx][1] or [Doxygen][2]?  Are the
source files in Scheme, Lilypond, or a combination of both?

[1]: https://en.wikipedia.org/wiki/Sphinx_(documentation_generator)

[2]: https://en.wikipedia.org/wiki/Doxygen


signature.asc
Description: PGP signature


Re: license question

2020-01-21 Thread mason
> I have a question concerning the GPL.  Is it permissible for an app
> under a GPL-incompatible license to provide output in LilyPond code?
> For example, could Finale provide a Finale->LilyPond converter even
> though the mechanics are shrouded in mystery?

IANAL, but I don't think this would be a problem.  Finale cannot
incorporate any of Lilypond's code in order to achieve this
functionality, but I don't thing anything would stop them from
implementing it themselves.

This reminds me of MATLAB and GNU Octave.  There this situation is
reversed, in that the proprietary program came before the GPL'd program,
but it is another example of two programs with incompatible licenses
using the same syntax.


signature.asc
Description: PGP signature


Re: QtWebEngine vs. Ubuntu 16.04

2019-12-28 Thread mason
On 12/29, Simon Albrecht wrote:
> In case you have an immediate idea why the machine might fail to boot
> into a live USB stick, please let me know—I’m going to try enabling USB
> legacy support in BIOS right now…

Was the USB not detected in the boot menu at all, or was it detected but
failed at some point after selecting it?


signature.asc
Description: PGP signature


Re: LilyJSSVG

2019-12-28 Thread mason
On 12/29, Paolo Prete wrote:
> this is a first TEST pre-beta-beta (etc. etc.) version of a graphic editor
> entirely in Javascript and generated by Lilypond itself. Made mainly for
> fun in my spare time.
> This GUI editor extends the functionality that I had experimented with the
> snippet published a few days ago for the tuning of curves through the mouse
> 
> https://github.com/paolo-prete/LilyJSSVG

Very cool!  I'm excited to try it.

Mason


signature.asc
Description: PGP signature


Re: Question about GPL license

2019-12-28 Thread mason
On 12/28, Paolo Prete wrote:
> In these days, I worked at my Javascript script which allows to place
> Lilypond's grobs with the mouse. I think I'm ready to share a test
> version on Github.  From what I see, the only license that I can use
> for it is GPLv3.

In order to make your code compatible with Lilypond (and potentially
Frescobaldi), then it should be under GPLv3 or another
GPLv3-compatible[1] license.  If you choose another GPLv3 compatible
license, then your code can be distributed alone under the terms of your
chosen license, or alongside Lilypond and/or Frescobaldi under the terms
of the GPLv3.

> I just saw this article about the bad sides of this license:
> 
> https://fodina.de/en/2019/lilypond-snippets-and-the-gpl/

This is unfounded FUD.  You can ignore it, or search the archives for
prior discussion of it.

Mason

[1] https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses


signature.asc
Description: PGP signature


Re: QtWebEngine vs. Ubuntu 16.04

2019-12-28 Thread mason
On 12/28, Simon Albrecht wrote:
> I want to spend as little time as possible on maintaining/upgrading
> the OS. So I’m reluctant to ditch 16.04 just yet. Should I bite the
> bullet and take the time to install 18.04?

18.04 has been out long enough that major bugs should have been worked
out by now.  Do you mostly stick to packages in the repo, or do you
often install third party packages?  The distro I use is Ubuntu-based,
and when I recently upgraded from 16.04 to 18.04 the only problems I ran
into were related to packages I had compiled from source and needed to
recompile against the upgraded system libraries.  You may also run into
issues if you have many PPAs added.  Otherwise, the upgrade should be
pretty smooth.

> Does it make sense to skip 18 and wait for 20.04 in April?

I think for the smoothest upgrade process, upgrade to 18.04 and resolve
any issues that arise first, and then upgrade to 20.04 and resolve any
new issues.  The more things break at once, the harder it will be to
troubleshoot them.  You might also want to wait until 20.04 has been out
for a few months before you upgrade from 18.04 to 20.04.

> If I should try within 16.04, here’s some sites I checked out on a
> brief search:
> 
> <https://askubuntu.com/questions/912830/libqt5webengine5-for-16-04> –
> the ppa mentioned there doesn’t exist anymore
> <https://forum.qt.io/topic/83394/installing-qt5-webengine-ubuntu-16-04>
> – the answers here seem to suggest setting up a whole different route
> of installing Qt, which seems like overkill
> <https://doc.qt.io/qt-5/linux-building.html> – this also seems like
> overkill if all I need is the ‘subpackage’ QtWebEngine

Mixing and matching packages from different Qt versions is likely to get
messy.  You might try this PPA,[1] which installs newer Qt versions to
/opt without conflicting with the version already on your system.  I
haven't tested it, but it may work for Frescobaldi.

Mason

[1] https://launchpad.net/~beineri


signature.asc
Description: PGP signature


Re: ANN: Frescobaldi 3.1 has been released!

2019-12-28 Thread mason
Sorry, forgot to copy the list.

On 12/28, ma...@masonhock.com wrote:
> On 12/28, Urs Liska wrote:
> > Ubuntu 16.04 is a LTS release with (IIRC) five years of support. So it
> > is not unreasonable for someone to use it. However, we (Frescobaldi)
> > seem to have been hit by this five-year term since we're dealing with
> > a change in the Qt framework that has phased out support for a module
> > over (again, IIRC) 2-3 years. So all *current* Linux distributions
> > ship with a Qt version that only includes QtWebEngine and not QtWebKit
> > anymore. There has been a range of Qt versions including both.
> >
> > The question is whether a project like Frescobaldi can reasonably be
> > expected to actively support such an old OS, even if it's LTS. I'd
> > assume that lTS guarantees you security patches but not that every new
> > software will run.
> 
> Right, LTS means continued security updates (only for packages in the
> Main repository, in Ubuntu's case), but three years into the release
> users cannot expect to run bleeding edge software without ever running
> into dependency issues.  It seems that most developers make an effort to
> support Ubuntu's current stable release (although Kdenlive does not,
> support Bionic, also due to Qt dependencies), but it is common for large
> projects not to support the previous stable release.
> 
> > Before upgrading to a newer OS it might be an option to use a current
> > Qt/PyQt downloaded or compiled from somewhere. @Simon you could do us
> > a huge favor by exploring that possibility and providing information
> > about it for the Wiki.
> 
> I have not tested this, but these PPAs[1] install newer versions of Qt
> to /opt, so that they do not conflict with the version of Qt already on
> the system.  This may be sufficient for Frescobaldi.
> 
> Mason
> 
> [1] https://launchpad.net/~beineri




signature.asc
Description: PGP signature


Re: ANN: Frescobaldi 3.1 has been released!

2019-12-27 Thread mason
On 12/28, Simon Albrecht wrote:
> I happen to have a little problem with that as well; here on my Ubuntu
> 16.04 machine neither apt nor synaptic can find any variation of
> qtwebengine5. There are several variations of webkit or so, but that’s
> probably something different, right? What can I do?

The first version of Ubuntu to package qtwebengine was 18.04 Bionic.[1]
Is upgrading an option for you, or do you need to stick with 16.04?

Mason

[1]
https://packages.ubuntu.com/search?keywords=qtwebengine=sourcenames


signature.asc
Description: PGP signature


Re: A snippet for editing Beams using the mouse

2019-12-16 Thread mason
On 12/16, Paolo Prete wrote:
> Hello everybody,
> 
> here is another snippet that uses the system that I previously
> implemented.  This time for the tuning of the beams.  This is too a
> very tedious operation to do with just the code and for this I believe
> that this tool is also useful.  As you can see, the code is not only
> shorter than the previous one, but it recycles the whole template of
> the previous snippet, which I'm making more and more generic.  In
> short, the goal is to have Lilypond itself automatically create a GUI
> tool for the tuning of the main properties of the grobs.
> 
> This is somewhat crazy: Lilypond used as a factory for WYSIWYG
> editors! :-)
> 
> HTH
> 
> Paolo
> 
> P.S) I don't know why the browser's viewer messes up the indentation
> of these attachments.  If so, I ask if are there volunteers to fix
> that and re-post the snippet (I see correct indentation if I paste the
> code to any online js editor)

Hi Paolo,

I haven't yet had time to thoroughly read your recent threads, but at
first glance what you're working on seems very cool, and I look forward
to having a chance to take a closer look.  Keep up the great work!

Mason


signature.asc
Description: PGP signature


Re: Poster for music engraving conference

2019-12-06 Thread mason
On 12/06, Werner LEMBERG wrote:
> Well, we need all posters approximately one week before the conference
> starts so that they can be plotted in time.  In other words, we need
> something until Jan 9th, which gives us more than a month.

Okay, I have some work to wrap up, but when I have time I'll see what I
can do if no one else has stepped up.

> I think that using lyluatex might be a good option.  The main
> question, however, is which poster class we should use.  Some ideas
> can be found at
> 
>   https://www.latextemplates.com/cat/conference-posters   ;
> 
> another possibility could be
> 
>   http://www.brian-amberg.de/uni/poster   .

Hopefully our decisions about what to include in the poster will then
inform our decisions about the layout.  I think we can start by coming
up with some text and snippets.

What language(s) should the text of the poster be in?


signature.asc
Description: PGP signature


Re: Poster for music engraving conference

2019-12-05 Thread mason
e full page of a complex and highly-polished score.

I'll let you know if I think of anything else.  I wish I could help a
little more directly, but I'm in the middle of a few very busy weeks.  I
would like to be involved in some way next year.

Best,

Mason


signature.asc
Description: PGP signature


Re: How to proofread?

2019-11-30 Thread mason
On 11/30, Jinsong Zhao wrote:
> Hi there,
> 
> It's may be some off topic. After a long struggle, I have nearly done
> the input of a sheet music. Then, I need to proofread it.
> 
> Generally, I split the screen into left and right frames, and put the
> score that Lilypond output and the original one into each frame, and
> read/compare notes one by one.
> 
> Is there any other ways you prefer to do proofread?
> 
> Best, Jinsong

After note entry, for my first round of proofreading I import Lilypond's
midi output into Musescore and play it back.  This

* changes the layout

* has per-track muting/soloing

* automatically scrubs though the score to follow playback

* strips out some things like dynamics

all of which I find useful for hearing errors and visually spotting
things that I missed while working with Lilypond's output.  I try to use
Musescore to make sure all of the pitches and rhythms are solid, and
then return to Lilypond's output for proofreading other score objects.

I also find that when I print the score and read through it on paper I
spot more errors than when viewing it on a computer screen.  I don't
like to waste paper, so I try to catch as many errors as possible at the
computer, but after that at least one or two rounds of printing out and
proofreading is necessary.

For scores with multiple staves, I find also that I notice different
errors while looking at the whole score from when I look at a part
containing just one staff, so I read it both ways.

If you have a fairly large monitor that can rotate 90 degrees
vertically, a vertical screen orientation can allow you to fit an entire
page to the screen, which I sometimes find preferable to scrolling
around.

I also have learned what kinds of errors I am most likely to make and to
miss while proofreading, such as octave displacement, and I look
specifically for errors like those.

Mason


signature.asc
Description: PGP signature


Re: In other news ...

2019-11-12 Thread mason
On 11/12, Urs Liska wrote:
> ... may I for once engage in some self-advertisment and point you to this
> post: 
> http://lilypondblog.org/2019/11/leopold-mozart-violin-school-1-the-project/
> ?

This looks terrific, Urs!  Congratulations.  Out of curiosity, is your
git repository for this project publicly available anywhere?  I would be
interested to see how you structured and organized your work.

Mason


signature.asc
Description: PGP signature


Re: harmonyli.ly beta 0.91 released

2019-11-11 Thread mason
On 11/11, David Wright wrote:
> On Mon 11 Nov 2019 at 00:11:53 (-0800), ma...@masonhock.com wrote:
> > Assuming that your architecture is amd64:
> > 
> > $ wget
> > http://ftp.us.debian.org/debian/pool/main/l/lilypond/lilypond_2.19.83-1~exp1_amd64.deb
> > 
> > $ sudo dpkg -i lilypond_2.19.83-1~exp1_amd64.deb
> 
> Add 
> http://ftp.us.debian.org/debian/pool/main/l/lilypond/lilypond-data_2.19.83-1~exp1_all.deb
> to that.

Good catch, thanks.

> But the disadvantage of installing that way is that the distribution
> only supports one version of LilyPond, and there are advantages to
> being able to run more than one.
> 
> If you download the program from lilypond.org, install with
> $ bash …path-to/lilypond-2.19.83-1.linux-64.sh --prefix 
> lilypond-2.19.83-1.linux-64
> and run with lilypond-2.19.83-1.linux-64/bin/lilypond …,
> you can have several versions available.

Yes, this is probably the easiest way to install 2.19 without going
through the package manager.

Mason


signature.asc
Description: PGP signature


Re: harmonyli.ly beta 0.91 released

2019-11-11 Thread mason
On 11/10, Karsten Reincke wrote:
> I've just tried to test your version. But it does not work, because my
> LilyPond version 2.18.2, offered by Ubuntu 19.10, does not contain a
> function \overlay. I have the hope, that the coming LTS Ubuntu version
> 20.04 will contain the newer 2.19.x  - LilyPond. 

Ubuntu is based on snapshots of Debian's unstable branch.  Lilypond
2.19.83 is currently in Debian's experimental branch, but the unstable
branch has 2.18.2, and this will presumably remain the case until
Lilypond 2.20 is released.  If Lilypond 2.20 is released in time to make
it into Debian unstable before Ubuntu freezes its package versions for
20.04, then Lilypond 2.20 might be available in the next Ubuntu LTS, but
otherwise it will still have 2.18.2.  The easiest way to install
Lilypond 2.19.83 on a Debian-based distro like Ubuntu is probably to
grab the deb from Debian experimental.

Assuming that your architecture is amd64:

$ wget
http://ftp.us.debian.org/debian/pool/main/l/lilypond/lilypond_2.19.83-1~exp1_amd64.deb

$ sudo dpkg -i lilypond_2.19.83-1~exp1_amd64.deb


signature.asc
Description: PGP signature


Re: LilyPond, LilyPond snippets and the GPL

2019-10-30 Thread mason
On 10/30, Karsten Reincke wrote:
> 1) I did not refer to the libstdc or anything else for which indeed
> the gcc runtime exception can be used. I am talking about the a bit
> abstract case of using a GPL licensed library or module or snippet as
> base of ones work compiled by the GCC to complere the analogy used by
> other participants of this discussion.

Okay, then GCC didn't need to be brought up at all.  Sorry for
misunderstanding.  That said, a pdf generated by Lilypond still does not
need to contain or use any Lilypond code.  Users do not need to fear
that they will "lose their rights" if they use a GPL'd snippet.

> it is complete misleading if you say that I
> 
> a) want to enforce Urs to relicense his work

I'm not sure how else to interpret a call to "perhaps convince the
OpenLilyLib developers to relicense their work."  

Mason


signature.asc
Description: PGP signature


Re: LilyPond, LilyPond snippets and the GPL

2019-10-30 Thread mason
On 10/30, Karsten Reincke wrote:
> Here, the analogy of gcc and Lilypond matches perfectly: As we are
> must distribute binaries which are compiled by the gcc on the base a
> GPL licensed source code, we must also distribute the binaries (png)
> which are compiled by LilyPond on the base of a GPL licensed LilyPond
> score description. It is exactly the same case.

The rational for the GCC exception is "These libraries are automatically
used by the object code that GCC produces. Because of that, if these
libraries were simply distributed only under the terms of the GPL, all
the object code that GCC produces would have to be distributed under the
same terms."[1]

This does not apply here.  A pdf generated by Lilypond does not
automatically use any snippets of Lilypond code.  A pdf reader can't
even do anything with Lilypond code.  You can distribute the pdf under
any license you want.  The GPL only comes into play if you distribute
your Lilypond code.

All of this is beside the point, though.  The library that started this
discussion (analysis) is for "graphical highlighting of musical
analysis,"  which is probably not something you need in order to engrave
and publish your music.  It seems more likely that the purpose behind
this FUD about the GPL is to put pressure on Urs to relicense of
analysis so that you can use it in harmonyli without having to comply
with the GPL.

On 10/30, Karsten Reincke wrote:
> RMS has invented the LGPL to ensure that free code stays free. (weak
> copyleft effect).

RMS intends the LGPL for libraries that do not provide any practical
advantages over existing non-GPL'd alternatives.[2]  The fact that you
are complaining about the license instead of using a different library
indicates that the license was probably chosen correctly.

On 10/30, Karsten Reincke wrote:
> I regret to be the messenger of bad news. But there is a simple
> solution: Don't use GPL licensed LilyPond snippets, if wou want to
> keep you rights. And perhaps convince the OpenLilyLib developers to
> relicense their work.

There it is.

Mason

[1] https://www.gnu.org/licenses/gcc-exception-3.1-faq.html

[2] https://www.gnu.org/licenses/why-not-lgpl.html


signature.asc
Description: PGP signature


Re: Musicology with Lilypond (and now correct attachments ;-)

2019-10-29 Thread mason
On 10/29, Urs Liska wrote:
> Well, the LSR website explicitly states that it's contents is in the
> public domain. If I read correctly your email this would have to be
> considered illegal, especially given that many snippets there are
> uploaded not by their original authors but by someone who uses the
> results of a mailing list discussion 

Like Andrew B says, it would probably take an international copyright
lawyer to really sort out the legal status of the LSR.  Saying that
something is public domain doesn't just make it so.  My understanding is
that unless the copyright has expired or the work has otherwise entered
the public domain, all rights are exclusively reserved until the author
gives up those right.  Unless LSR contributors agree to this at some
point during the upload process, they reserve all rights to their code.
Even if contributors are asked to release their work into the "public
domain", that would be legally ambiguous.  The purpose of CC0 is to
resolve this ambiguity.  If the intent is public domain-like status,
contributors should be asked to release their work under CC0.  Even
then, if you are correct that many snippets were uploaded by someone
other than the original author, then the uploaders don't even have the
power to release the code under CC0 without permission from the author.

> Is there anything that should be done about the LSR?

Clarifying the unclear licensing terms retroactively would likely be
such a large task that it is probably not worth attempting unless legal
problems are likely to arise in practice, and since I'm sure that most
snippet authors intended for their code to be free, I doubt that this
will happen.

Moving forward though, it would probably be good to ensure that for
similar projects (such as OLL's snippets) contributions are clearly
under free licenses (ideally GPL-compatible[1] ones, so that the
snippets can be freely combined with Lilypond and/or Frescobaldi).

[1] https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses


signature.asc
Description: PGP signature


Re: Musicology with Lilypond (and now correct attachments ;-)

2019-10-28 Thread mason
On 10/28, Klaus Blum wrote:
> AFAIK, the public domain licence also applies to anything published on
> the LY mailing list. I hope that I'm not wrong as I don't intend to
> "steal" other people's code...

I don't think that list users agree to a CLA or otherwise give anyone
else the ability to decide how any code they share is licensed, so
unless the author of a code snippet explicitly releases it under a free
license, or the snippet is too trivial to be copyrightable, then in most
jurisdictions the code snippet probably is non-free.  Most list users
probably *intend* for the code they share to be free, so they are
unlikely to attempt to enforce any copyright restrictions, but in the
177 countries who signed the Berne Convention they legally reserve all
rights to the code.

Most LSR snippets are free probably non-free as well.  "Public domain"
is ambiguous in the context of works whose copyright restrictions have
not expired (or are not public domain from some other reason, such as
being published by the US government).  The closest you can get to
"releasing" your otherwise-copyrighted work into the public domain in
all jurisdictions is to explicitly apply CC0[1] to your work.  Some LSR
snippets might include a free license statement, and some are shared by
the author elsewhere under a free license, but for the rest, the legal
status will vary by jurisdiction.  Since many contributions are
anonymous, they could be considered orphan works.[2]  In some countries
it is legal to use orphan works, but in many they are in limbo: you
can't use them without permission, but there's no one to get permission
from.  Like with the list though, I'm sure that most contributors to the
LSR intended for their code to be free and are unlikely to attempt to
enforce any copyright restrictions.

[1] https://creativecommons.org/share-your-work/public-domain/cc0/

[2] https://en.wikipedia.org/wiki/Orphan_work


signature.asc
Description: PGP signature


Re: Musicology with Lilypond (and now correct attachments ;-)

2019-10-28 Thread mason
On 10/28, Karsten Reincke wrote:
> The analysis package is a challenge for me:
> 
> a) It is licensed under GPL. I think this is not appropriate for
> music.

Sure, the GPL is intended for software.  For music, a CC license would
be more appropriate.  The analysis package is pretty clearly software,
though.  CC BY-SA-4.0 is one-way-compatible with GPLv3, so if for some
reason there is a need to combine the code with a substantial amount of
music, I guess the music could be licensed under CC BY-SA-4.0 with the
code remaining under the GPL.  At first glance though, the only music it
appears to contain are some brief fragments in the usage examples, which
are probably too trivial to be worth licensing differently from the
code.

> In a few days I will write a little article about this topic. But
> without changing that license I cannot contribute to it.

I don't see why not, unless you want to create a proprietary derivative
of the result or hope that someone else will, in which case the GPL is
working as intended.

> b) I did not find an example, which can be downloaded and be compiled
> without additional 'installation steps'. And unfortunately, also the
> home page of openlilylib is forthe moment more a frame than an
> information source. Where can I get such a tutorial?

Yes, the website is empty, but there is a lot of information in the
Github repositories[1] and their wikis.  I suggest starting here.[2]

Mason

[1] https://github.com/openlilylib/

[2] https://github.com/openlilylib/oll-core/wiki


signature.asc
Description: PGP signature


Re: workflow advice: avoiding wrong octave errors?

2019-08-23 Thread mason
On 08/23, Kieren MacMillan wrote:
> You can always use \fixed.  =)

I didn't know about \fixed until just now. My first thought was to use
this to make the "default" pitches begin on the bottom space of the
staff, i.e., for treble clef

\fixed f' {f g a b c d e} 

is equivalent to

{f' g' a' b' c'' d'' e''}

This way, notes inside the staff would need no "," or "'", and most
notes outside would need only a single "," or "'". I think I could keep
track of octaves pretty easily if the notation were connected visually
to the staff I'm reading from.

Unfortunately, only the octave, not the note name, of the reference
pitch appears to have an effect.

\fixed f' {f g a b c d e}

has the same output as 

\fixed c' {f g a b c d e}

and

{f' g' a' b' c' d' e' f'}

> > Maybe it wouldn't be so bad if I got used to it though.
> 
> That was certainly my experience — after nearly a decade of using
> \relative (despite *many* frustrations around transposing instruments,
> introduction of octavation errors via copy-and-paste, etc.), I moved
> to absolute, and within about 6 months, I was shocked that I ever
> worked any other way.
> 
> > What's your experience with MIDI entry?
> 
> In Frescobaldi, it is quite smooth — essential to my workflow, really.

Thanks, When I have time to make larger changes to my workflow I'll give
this a shot.

Mason


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


Re: workflow advice: avoiding wrong octave errors?

2019-08-23 Thread mason
Thanks Kieren,

On 08/23, Kieren MacMillan wrote:
> My primary suggestion: use absolute instead of relative note entry, and you 
> will never have incorrect octavation again.  :)

I thought of that, but my worry is that I'll still make octave errors,
but each will result in one transposed note instead of a transposed
phrase, which might be even less apparent than proofreading. I also find
relative note entry to be more intuitive and human readable. Maybe it
wouldn't be so bad if I got used to it though.

> My secondary suggestion: to make entry fast and super-accurate, use MIDI 
> entry if possible.

I have never looked into MIDI entry for Lilypond. I was never fond of it
back when I used Sibelius, because correcting things like the spelling
of accidentals became more trouble than it was worth. A quick search
finds this,[1] which likes like it has the potential for a reasonable
workflow. What's your experience with MIDI entry?

> If you stick with relative note entry, then perhaps use octave checks 
> regularly?

Now that I know about octave checks I'm going to start using them and
see if that's enough to avoid octave errors. Depending on how that goes
I might try out absolute or MIDI entry next.

Mason

[1] https://github.com/jurihock/lilyfrog


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


Re: workflow advice: avoiding wrong octave errors?

2019-08-23 Thread mason
"Octave checks" occurred to me while I was writing. I should have
thought to RTFM before sending...

http://lilypond.org/doc/v2.18/Documentation/notation/changing-multiple-pitches#octave-checks

Mason

On 08/23, ma...@masonhock.com wrote:
> I typically make few errors while inputting music. The two most common
> exceptions are incorrect note durations and placing a note in the wrong
> octave. The former generally is not a problem, because bar checks catch
> the error and tell me where to look. However, the latter slips by more
> easily.
> 
> If after compiling I notice that a voice is in the wrong octave, I know
> to then go looking for the error, but with no equivalent to bar checks,
> it takes longer to find the error. Worse is when I have made two octave
> errors in opposite directions, causing the voice to end up in the
> correct octave. In this case, I don't spot the error until I do a round
> of proofreading.
> 
> Does anyone have any tips they've found for avoiding this kind of error
> or catching it earlier? What I'm trying now is to get into a habit of
> compiling and checking against the manuscript more frequently, but this
> slows me down, so I'd also be interested in general strategies for
> avoiding octave errors in the first place. What would be terrific is
> some sort of "octave check" where at the end of a line I can enter a
> pitch in absolute notation which is checked against the most recent
> pitch in relative notation and throw an error if the octave is wrong,
> similar to \barNumberCheck.
> 
> Mason




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


workflow advice: avoiding wrong octave errors?

2019-08-23 Thread mason
I typically make few errors while inputting music. The two most common
exceptions are incorrect note durations and placing a note in the wrong
octave. The former generally is not a problem, because bar checks catch
the error and tell me where to look. However, the latter slips by more
easily.

If after compiling I notice that a voice is in the wrong octave, I know
to then go looking for the error, but with no equivalent to bar checks,
it takes longer to find the error. Worse is when I have made two octave
errors in opposite directions, causing the voice to end up in the
correct octave. In this case, I don't spot the error until I do a round
of proofreading.

Does anyone have any tips they've found for avoiding this kind of error
or catching it earlier? What I'm trying now is to get into a habit of
compiling and checking against the manuscript more frequently, but this
slows me down, so I'd also be interested in general strategies for
avoiding octave errors in the first place. What would be terrific is
some sort of "octave check" where at the end of a line I can enter a
pitch in absolute notation which is checked against the most recent
pitch in relative notation and throw an error if the octave is wrong,
similar to \barNumberCheck.

Mason


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


Re: frescobaldi extensions [was: python-ly, ly.indent]

2019-08-19 Thread mason
On 08/18, Urs Liska wrote:
> Hi Mason,
> 
> 18. August 2019 01:05, ma...@masonhock.com schrieb:
> 
> > On 08/17, Urs Liska wrote:
> > 
> >> ...
> > 
> > Thanks. While I personally prefer command line tools, I would consider
> > turning this into a Frescobaldi extension if that would mean the
> > difference between something only being useful to me versus potentially
> > being useful to others. 
> 
> OK. From my experience I'd say it is a worthwile but non-trivial effort to 
> make things generally useful and available. You always have to strike a 
> balance between enabling *arbitrary* use cases and imposing complex 
> configuration "costs" on the user.
> 
> > Some questions:
> > 
> > I am planning to include several openLilyLib packages as submodules.
> > Edition Engraver integration is a particularly high priority, because
> > one goal is to be able to maintain editions of scores and parts for
> > different paper and tablet sizes. I could see a dependency on
> > openLilyLib packages as being a problem for a Frescobaldi extension.
> 
> That's correct and actually an example of the undue burdens I meant in the 
> comment above.
> 
> > Unless the extension provides the relevant packages, the user will need
> > to supply the correct version of those packages, which will be hard
> > unless openLilyLib starts providing versioned releases of packages. (It
> > looks like ScholarLY already does,[1] but Edition Engraver does not.)
> > Are there plans to integrate any OLL packages into Frescobaldi (or
> > Lilypond proper, for that matter)?
> 
> Well, that's basically two questions, one directed at openLilyLib, the other 
> at Frescobaldi.
> 
> With openLilyLib I would long have wanted to invest more work (or have 
> contributors) to move it in a more structured direction, along with a proper 
> strategy for consistent documentation, a website and also a clearer outside 
> interface with releases and such.
> 
> One thing that has been done in that direction is requiring an openLilyLib 
> package to have a metadata file package.cnf with details such as name and 
> description, but also listing the included submodules (scholarLY for example 
> has modules like annotate, choice or editorial-markup), package version, API 
> version and dependencies. 
> https://github.com/openlilylib/scholarly/blob/master/package.cnf is 
> scholarLY's metadata file.
> Andrew Bernard has written a parser for a simple configuration language used 
> for this 
> (https://github.com/openlilylib/oll-core/blob/master/scheme/oll-core/internal/vbcl.scm),
>  which I've ported to Python for use in Frescobaldi 
> (https://github.com/frescobaldi/frescobaldi/blob/master/frescobaldi_app/vbcl/__init__.py).
> 
> The trigger for that development actually was (and that gets to the second 
> issue) my intention to integrate openLilyLib support into Frescobaldi. I had 
> already started with it but had to stop at some point. From the attached 
> screenshot you can see that it would list all packages found in a root 
> directory and display their metadata, while the management functions 
> accessible through the buttons to the right have not been implemented yet.
> 
> Actually, this feature is a prime use case for Frescobaldi extensions: while 
> I want that functionality seamlessly integrated in the Frescobaldi 
> environment it's not general enough to be added to Frescobaldi itself. The 
> moment to add openLilyLib support to Frescobaldi would be when openLilyLib 
> would natively be added to LilyPond, which is not the goal.
> 
> So if you write an extension that deals with openLilyLib the extension could 
> simply name the not-yet-written openLilyLib extension as a dependency. The 
> openLilyLib extension would then have to provide an interface (something I 
> realized just now) to manage extensions programmatically (i.e. your extension 
> can for example require the edition-engraver package).
> 
> ###
> 
> With regard to "project management" extensions I would like to write one (or 
> two) "base extensions" that provide reusable functionality for two common use 
> cases. As far as I can tell there are two fundamental approaches to large 
> repertoires (e.g. your whole collection of scores, a work with numerous 
> sub-scores or the like): there is either a given repertoire that has to be 
> completed or there is a loose collection of scores. In the first case there 
> has to be a list of scores that the interface can navigate and handle (this 
> is what one of the screenshots in my previous post shows), while in the 
> second the repertoire is inferred from a given directory tree (and you can 
> sim

collision between beam and lyrics when using \change Staff

2019-08-19 Thread mason
I am using `\change Staff` to manually switch between the staves of a
PianoStaff, as per.[1]

Above the piano staff is a voice part with lyrics. The beams of the
piano part collide with the lyrics of the voice part. If I do not use
`\change Staff` then the collision does not occur.

%%% begin MWE %%%
\version "2.21.0"

% collision between beam and lyrics
\score {
  <<
\new Staff \relative c' { c'4 c c }
\addlyrics { foo bar foo }
\new PianoStaff <<
  \new Staff = "up"
  \relative c' {
s2. |
  }
  \new Staff = "down"
  \relative c' {
\clef bass
\time 3/4
c,,8  c' \change Staff = "up" c' c' c' c,
  }
>>
  >>
}

% no collision
\score {
  <<
\new Staff \relative c' { c'4 c c }
\addlyrics { foo bar foo }
\new PianoStaff <<
  \new Staff = "up"
  \relative c' {
\override Beam.direction = #UP
s4 c'8 c' c' c,
  }
  \new Staff = "down"
  \relative c' {
\clef bass
\time 3/4
c,,8  c' s2
  }
>>
  >>
}
%%% end MWE %%%

How can I avoid collisions between beams and lyrics while using `\change
Staff`?

Thanks,

Mason

[1] 
http://lilypond.org/doc/v2.18/Documentation/notation/common-notation-for-keyboards#changing-staff-manually


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


frescobaldi extensions [was: python-ly, ly.indent]

2019-08-17 Thread mason
On 08/17, Urs Liska wrote:
> I can't promise it will eventually pay off in terms of effort, but I' 
> definitely encourage you to have a look at Frescobaldi's extension API, which 
> has been merged to master and will be available in the next release (whenever 
> that will be). It allows you to create and register extensions with a pretty 
> simply framework, and with that you (nearly) automatically get
> 
> * a Tool panel (see first attached image)
> * a Tool menu with actions defined by the extension
> * optional integration in various context menus
> * a configuration page in the Preferences (second attached image)
> 
> Writing an extension has two main advantages: Having the interface for the 
> stuff one wants to do within Frescobaldi, and having access to all of 
> Frescobaldi's functionality, just like you were adding something to 
> Frescobaldi itself. Of course you still have to do the actual programming 
> yourself, but it's a very convenient framework to start with. I think one 
> major use case for such extensions is creating interfaces for complex 
> projects or repertoires where you have to deal with creating LilyPond files, 
> managing content in directory structures, validating user input etc. The 
> extension shown in the attachments is there to keep track of the progress in 
> a project with 600+ music examples where the first and most important task 
> was to provide navigation and filtering in that vast amount of individual 
> files.
> 
> You may have a look at https://github.com/frescobaldi-extensions where two 
> different kinds of example extensions provide a first introduction. The third 
> repository with documentation is (as usual) very preliminary, but it may also 
> give introductory insights. I'd be glad if someone else would give it a try 
> and start using this new feature to give more feedback and different 
> perspectives. So far I'd say it's fairly stable but both the conception and 
> testing have been pretty much restricted to my own requirements so far.

Thanks. While I personally prefer command line tools, I would consider
turning this into a Frescobaldi extension if that would mean the
difference between something only being useful to me versus potentially
being useful to others. Some questions:

I am planning to include several openLilyLib packages as submodules.
Edition Engraver integration is a particularly high priority, because
one goal is to be able to maintain editions of scores and parts for
different paper and tablet sizes. I could see a dependency on
openLilyLib packages as being a problem for a Frescobaldi extension.
Unless the extension provides the relevant packages, the user will need
to supply the correct version of those packages, which will be hard
unless openLilyLib starts providing versioned releases of packages. (It
looks like ScholarLY already does,[1] but Edition Engraver does not.)
Are there plans to integrate any OLL packages into Frescobaldi (or
Lilypond proper, for that matter)?

For now my priority is to create the command line tools that will meet
my immediate needs, but if there is a way to do this so that I can then
more easily reuse the same code as the backend of a Frescobaldi
extension I will. I'm not familiar with Frescobaldi's code, but I
imagine that relying on tools provided by python-ly where possible would
be wise, and that I should generally avoid reimplementing something
Frescobaldi already does.

For example, the functions I've written so far use `print(line, file=f)`
to write Lilypond files line by line. See here[2] for instance. I assume
that Frescobaldi already has a way to write Lilypond files in order to
make the score wizard work, and that a Frescobaldi extension might be
better off taking the same approach. Is this something that can be
abstracted and used outside Frescobaldi in the way that its indentation
functionality can?

Based on your familiarity with Frescobaldi and Frescobaldi extensions,
do you have any general advice, or parts of Frescobaldi or that
extension I should look at? Ideally I would write this as a Frescobaldi
extension from the beginning, but it's unfamiliar territory for me and
for now I need to make something usable for my next Lilypond project
before spending a lot of time learning new skills. In addition to being
unfamiliar with Frescobaldi, I have never worked with graphical user
interfaces before.

Thanks,

Mason

[1] https://github.com/openlilylib/scholarly/releases
[2] https://notabug.org/chaosmonk/lilypond-project-manager/src/master/utils.py


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


Re: python-ly, ly.indent

2019-08-17 Thread mason
I currently manage my Lilypond projects with bash scripts that piece
together all of the files to build the score and parts in different
editions, page sizes, etc. Here's an example.[1] The automation has
many advantages, but it's very messy. I'm using files and directory
structures as a substitute for variables and data structures, and as
I've hacked on it to accommodate increasingly complex projects it has
become more unwieldy and less flexible. Right now I'm engraving an
opera for a client, which has required me to extend the bash scripts to
handle things like multiple movements with different instrumentations,
arias transposed to multiple keys, etc., and while it works, I'm not
happy with how complicated it is.

To make things easier on myself in the future, I am starting over from
scratch with Python and hindsight. I just started and haven't gotten far
yet. I'm taking it slow and trying to make sure I do things "the right
way" this time. Here's what I have so far, if you're interested.[2]

By the way, I started using git after reading your blog posts about
version control, and it has saved my life numerous times. Most recently,
for the opera I mentioned, I need to add in some ornamentations to some
arias for the purposes of a recording session, but these ornamentations
will not be in the final publication. While adding in the
ornamentations, I caught some errors that would need to be fixed for
both the version with ornamentations *and* the final publication. Doing
so was as simple as checking out the master branch, making the changes,
checking out the ornamentations branch, and merging. Without version
control I would have had to make these changes to both copies of the
project in parallel, introducing the risk of discrepancy between the two
versions due to human error.

Mason

[1] https://notabug.org/chaosmonk/untouchable-space

[2] https://notabug.org/chaosmonk/lilypond-project-manager

On 08/17, Urs Liska wrote:
> Hi Mason,
> 
> great that it really worked how I thought it should :-)
> 
> May I ask what you are doing this for?
> 
> Best
> Urs
> 
> 17. August 2019 19:25, ma...@masonhock.com schrieb:
> 
> > Thanks Urs,
> > 
> > Seeing how the Document and Cursor classes are used there was enough to
> > put me on the right track. I've achieved what I was going for with this:
> > 
> > %%% begin test.py %%%
> > import ly.document
> > import ly.indent
> > 
> > music = '''\\new Staff <<
> > \\relative c' { c4 c c c } |
> > 
> >> '''
> > 
> > d = ly.document.Document(music)
> > c = ly.document.Cursor(d)
> > i = ly.indent.Indenter()
> > 
> > c.select_all()
> > i.indent(c)
> > 
> > print (d.plaintext())
> > %%% end test.py %%%
> > 
> > $ python3 test.py
> > \new Staff <<
> > \relative c' { c4 c c c } |
> >> 
> > 
> > Best,
> > 
> > Mason
> > 
> > On 08/17, Urs Liska wrote:
> > 
> >> Just shortly: does
> >> 
> >> https://github.com/frescobaldi/python-ly/blob/master/ly/cli/main.py
> >> 
> >> and
> >> 
> >> https://github.com/frescobaldi/python-ly/blob/master/ly/cli/command.py#L116
> >> 
> >> help you further? I thought it would be best to look how the ly command 
> >> line program does it.
> >> 
> >> Urs
> >> 
> >> Am 17. August 2019 03:00:47 MESZ schrieb ma...@masonhock.com:
> >> Hi all,
> >> 
> >> The command line tools provided by python-ly are very
> >> convenient and easy to use, but I'm finding it a little harder to wrap
> >> my head around the Python module.
> >> 
> >> For example, it is easy to automatically indent a file with
> >> 
> >> $ ly "indent" file.ly
> >> 
> >> or to indent the output of another command such as
> >> 
> >> $ cat file.ly | ly "indent"
> >> 
> >> I'd like to be able to do something similar in Python, using ly.indent
> >> to indent files or (preferably) strings. It seems that ly.indent might
> >> be what I want, but I'm having trouble figuring out how it works. The
> >> Indenter() class, with an indent() function, is defined here,[1] but
> >> I'm
> >> don't understand what a cursor object is or how to create and pass one.
> >> I next tried looking through Frescobaldi's code for example usage and
> >> found this,[2] but I think I would need to learn more about how
> >> Frescobaldi works in order to follow what's happening, which is deeper
> >> than I want to go to indent a string of Lilypond code.
> >> 
> >> Is there a simple way to use ly.

Re: python-ly, ly.indent

2019-08-17 Thread mason
Thanks Urs,

Seeing how the Document and Cursor classes are used there was enough to
put me on the right track. I've achieved what I was going for with this:

%%% begin test.py %%%
import ly.document
import ly.indent

music = '''\\new Staff <<
\\relative c' { c4 c c c } |
>>>'''

d = ly.document.Document(music)
c = ly.document.Cursor(d)
i = ly.indent.Indenter()

c.select_all()
i.indent(c)

print (d.plaintext())
%%% end test.py %%%

$ python3 test.py
\new Staff <<
  \relative c' { c4 c c c } |
>>>

Best,

Mason

On 08/17, Urs Liska wrote:
> Just shortly: does
> 
> https://github.com/frescobaldi/python-ly/blob/master/ly/cli/main.py
> 
> and
> 
> https://github.com/frescobaldi/python-ly/blob/master/ly/cli/command.py#L116
> 
> help you further? I thought it would be best to look how the ly command line 
> program does it.
> 
> Urs
> 
> 
> Am 17. August 2019 03:00:47 MESZ schrieb ma...@masonhock.com:
> >Hi all,
> >
> >The command line tools provided by python-ly are very
> >convenient and easy to use, but I'm finding it a little harder to wrap
> >my head around the Python module.
> >
> >For example, it is easy to automatically indent a file with
> >
> >$ ly "indent" file.ly
> >
> >or to indent the output of another command such as
> >
> >$ cat file.ly | ly "indent"
> >
> >I'd like to be able to do something similar in Python, using ly.indent
> >to indent files or (preferably) strings. It seems that ly.indent might
> >be what I want, but I'm having trouble figuring out how it works. The
> >Indenter() class, with an indent() function, is defined here,[1] but
> >I'm
> >don't understand what a cursor object is or how to create and pass one.
> >I next tried looking through Frescobaldi's code for example usage and
> >found this,[2] but I think I would need to learn more about how
> >Frescobaldi works in order to follow what's happening, which is deeper
> >than I want to go to indent a string of Lilypond code.
> >
> >Is there a simple way to use ly.indent similarly to `ly "indent"`, or
> >would I be better off invoking `ly "indent"` externally with
> >os.system()?
> >
> >Thanks,
> >
> >Mason
> >
> >[1]
> >https://github.com/frescobaldi/python-ly/blob/0d91ca2450ba01a8158f53ba05202af3e13bf78d/ly/indent.py
> >
> >[2]
> >https://github.com/frescobaldi/frescobaldi/blob/09cae764126b505dedf0182beccd78d7934b2de4/frescobaldi_app/indent.py
> 
> -- 
> Diese Nachricht wurde von meinem Android-Gerät mit K-9 Mail gesendet.

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



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


python-ly, ly.indent

2019-08-16 Thread mason
Hi all,

The command line tools provided by python-ly are very
convenient and easy to use, but I'm finding it a little harder to wrap
my head around the Python module.

For example, it is easy to automatically indent a file with

$ ly "indent" file.ly

or to indent the output of another command such as

$ cat file.ly | ly "indent"

I'd like to be able to do something similar in Python, using ly.indent
to indent files or (preferably) strings. It seems that ly.indent might
be what I want, but I'm having trouble figuring out how it works. The
Indenter() class, with an indent() function, is defined here,[1] but I'm
don't understand what a cursor object is or how to create and pass one.
I next tried looking through Frescobaldi's code for example usage and
found this,[2] but I think I would need to learn more about how
Frescobaldi works in order to follow what's happening, which is deeper
than I want to go to indent a string of Lilypond code.

Is there a simple way to use ly.indent similarly to `ly "indent"`, or
would I be better off invoking `ly "indent"` externally with
os.system()?

Thanks,

Mason

[1] 
https://github.com/frescobaldi/python-ly/blob/0d91ca2450ba01a8158f53ba05202af3e13bf78d/ly/indent.py

[2] 
https://github.com/frescobaldi/frescobaldi/blob/09cae764126b505dedf0182beccd78d7934b2de4/frescobaldi_app/indent.py


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


Re: hide barline when \startStaff coincides with system break

2019-08-04 Thread mason
On 08/04, Toine Schreurs wrote:
> > In bar 6 below, where \startStaff coincides with a system break, a lone
> > barline is drawn at the end of the previous system. I would prefer for
> > the barline to be omitted in this situation.
> 
> Insert the next line before every \startStaff:
>   \once \override Staff.BarLine.break-visibility = ##(#f #t #f)
> or
>   \once \override Staff.BarLine.break-visibility = #center-visible
> 
> If a \startStaff occurs at the end of a line, no barline will be drawn.

Perfect!

Toine and Pierre, thanks for your help.

Mason


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


hide barline when \startStaff coincides with system break

2019-08-02 Thread mason
In bar 6 below, where \startStaff coincides with a system break, a lone
barline is drawn at the end of the previous system. I would prefer for
the barline to be omitted in this situation.

In bar 4, where \startStaff does not coincide with a system break, I
have a slight preference to keep the barline.

Is there an override that would cause a lone barline like that at the
end of the system to be omitted? I would prefer that the override keep
the barline before bar 4, but if that's not possible I would accept an
override such that barlines are never drawn at a \startStaff.

%%% begin MWE %%%

\version "2.21.0"

\score {
  <<
\new Staff \relative c' {
  c4 c c c |
  c4 c c c |
  \stopStaff
  s1
  \startStaff
  c4 c c c |
  \stopStaff
  s1 |
  \startStaff
  \break
  c4 c c c
}
\new Staff \relative c' {
  \repeat unfold 6 { c4 c c c }
}
  >>
}

%%% end MWE %%%

Thanks,

Mason



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


Re: \startStaff after clef change in other staff

2019-07-31 Thread mason
On 07/31, Pierre Perol-Schneider wrote:
> \version "2.21.0"
> % Option 1:
> \score {
>   <<
> \new Staff \relative c' {
>   c4 c c c |
>   \stopStaff
>   s1 |
>   \startStaff
>   c4 c c c |
> }
> \new Staff \relative c' {
>   c4 c c c |
>   c4 c c c |
>   \once\override Score.BreakAlignment.break-align-orders =
> #(make-vector 3 '(staff-bar clef))
>   \clef "bass" c4 c c c |
> }
>   >>
> }
> 
> % Option 2:
> \score {
>   <<
> \new Staff \relative c' {
>   c4 c c c |
>   \stopStaff
>   s1 |
>   \startStaff
>   c4 c c c |
> }
> \new Staff \relative c' {
>   c4 c c c |
>   c4 c c c |
>   \clef "bass" c4 c c c |
> }
>   >>
>   \layout {
> \context {
>   \Score
>   \remove Break_align_engraver
> }
> \context {
>   \Staff
>   \consists Break_align_engraver
> }
>   }
> }

Thanks Pierre,

Both of these approaches seem promising. I like that neither requires
manual tweaking, and I like that the Option 2 seems to not be specific
to clefs, which is good since there are also some places where grace
notes have a similar effect. However, the version in your earlier email
does produce a better result, in that it changes where the staff begins
as opposed to moving the barlines. I'll play around with these. Thanks.

Mason


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


\startStaff after clef change in other staff

2019-07-30 Thread mason
When a staff that has previously been stopped with \stopStaff is
restarted with \startStaff on the first beat of a measure, and this
coincides with a clef change in another staff, the first staff begins at
the clef instead of the barline.

%%% begin MWE %%%

\version "2.21.0"

\score {
  <<
\new Staff \relative c' {
  c4 c c c |
  \stopStaff
  s1 |
  \startStaff
  c4 c c c |
}
\new Staff \relative c' {
  c4 c c c |
  c4 c c c |
  \clef "bass" c4 c c c |
}
  >>
}

%%% end MWE %%%

This might be desirable in general, but in the context of my score
(not necessarily in this MWE) it looks odd. Is there a way to override
this behavior so that the staff begins on the barline?

Thanks,

Mason


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


Re: LilyPond 2.20 or 2.21 for Linux

2019-03-30 Thread Mason Hock
On 03/30, Urs Liska wrote:
> >I'm not aware of any reason it wouldn't work on
> >18.04.
> 
> except for the "small" issue of 18.04 not having  Guile 1.8 anymore...

I hadn't been aware of this. It does complicate things a bit.

Since Guile 1.8 is also needed for Lilypond 2.18.2, I figured Ubuntu
18.04 must have some way of using Guile 1.8 to build Lilypond. It looks
like the Lilypond source package includes Guile 1.8 as a tarball.[1] I
don't have access to an 18.04 system so I cannot test this, but
something like the following might work:

$ wget 
http://archive.ubuntu.com/ubuntu/pool/universe/l/lilypond/lilypond_2.18.2.orig-guile18.tar.gz
$ tar xf lilypond_2.18.2.orig-guile18.tar.gz
$ cd guile-1.8-1.8.8+1.orig/
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Mason

[1] https://packages.ubuntu.com/source/bionic/lilypond


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


Re: LilyPond 2.20 or 2.21 for Linux

2019-03-30 Thread Mason Hock
On 03/30, Ralph Palmer wrote:
> I think I missed something. Can I install 2.20 and/or 2.21 on Linux?
> not an expert, though I've used command line some.

I don't think that 2.20 has been released, but since you're comfortable
with the command line you can build 2.21.

> Also, I'm running Ubuntu 18.04.2 and Frescobaldi 3.0.0. Are there any known
> conflicts?

I have built and run 2.21 on a derivative of 16.04 and used it with
Frescobaldi 3.0.0. I'm not aware of any reason it wouldn't work on
18.04.

$ sudo apt install git
$ sudo apt build-dep lilypond
$ git clone git://git.savannah.gnu.org/lilypond.git
$ cd lilypond
$ ./autogen.sh

Running "sudo apt build-dep lilypond" earlier will have installed build
dependencies for Ubuntu's version of Lilypond (presumably 2.18.2) but
if 2.21 has any additional dependencies then autogen.sh will tell you
that you are missing a required package. Install that package with
"sudo apt install [package-name]". If the package isn't found, then
Ubuntu might have the package under a slightly different name (usually
when this happens you need to add a "lib" prefix or "-dev" suffix). If
you get stuck, "apt-cache search [what you thought the name was]" can
help. Repeat until autogen.sh completes without errors. Then,

$ make all

Wait for Lilypond to build, and

$ sudo make install

Good luck!

Mason



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


Re: Openlilylib edition engraver guide

2019-03-14 Thread Mason Hock
On 03/14, Urs Liska wrote:
> I have now placed the "rundown" at
> https://github.com/openlilylib/edition-engraver/wiki.

This looks great!

Mason


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


Re: LilyPond 64-bit version for a Mac

2019-03-07 Thread Mason Hock
On 03/07, Karlin High wrote:
> Okay, probably not. Apple and GPL-maker the Free Software Foundation seem
> pretty uninterested in each other's goals.
> 
> 
> 
> 

My message to the list yesterday seems to have not gone through, but
here's my (IANAL) understanding of the situation:

Unless Apple has changed its policy, the App Store terms of use impose
restrictions beyond that of the software's license, which violates any
version of the GPL, even with the source code. Moreover, iOS does not
allow the user to install unsigned software, so even if the user can
modify the software they can not run it in iOS. GPLv2 allows this, but
the loophole was closed in GPLv3. In order to legally distribute
GPL-licensed software through the App Store, all contributors (unless
they have signed a CLA) must agree to relicense the iOS version of the
software or make an exception to the license. Nextcloud is an example of
the latter.[1] I'm not familiar with Stockfish and am not sure what
their situation is.

See also.[2]

[1] https://github.com/nextcloud/ios/blob/master/COPYING.iOS
[2] https://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement


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


Re: LilyPond 64-bit version for a Mac

2019-03-04 Thread Mason Hock
On 03/02, Carl Sorensen wrote:
> We cannot use our regular build system to create LilyPond binaries due to 
> Apple’s restrictive licensing on the OSX SDK.

Could you explain briefly or link to why this is? I understand that the
App Store's restrictions would violate the GPL, and that Apple avoids
distributing anything under GPLv3, presumably to avoid the tivoization
clause, but I was not aware of any restrictions on what developers could
independently build for macOS and distribute.


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


Re: Tips and Tricks on making Vim a good environment for Lilypond?

2019-01-21 Thread Mason Hock
On 01/21, Ivan Kuznetsov wrote:
> I have looked at Frescobaldi, but once one is fluent
> with a Unix editor (which means vim or emacs)
> Frescobaldi and other third party tools are
> _not_ a time saver.

I use vim for everything except large Lilypond projects that consist of
multiple input files. The ability to click on an object in the score and
jump to that place in the code, even if the file containing that code is
not open, outweighs for me vim's advantages as a text editor, but I also
have not spent much time trying to come up with an alternative solution
in vim. How do you angle this.

> You ask about workflow though, and apart from
> a xterm where I am using vim, a PDF viewer which
> automatically reloads an updated file, and a
> Makefile, I don't know that there is anything
> to offer you.

I'd be interested to see one of your Makefiles.

> I have the above template in a separate file, we will say
> this file is called "v.ly", and when I need this template
> I execute in vim:
> 
>   :r v.ly

Nice.

Mason


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


Re: Avoid accidentals in cadenza

2018-10-07 Thread Mason Hock
On 10/07, Noeck wrote:
> Hi,
> 
> Am 07.10.2018 um 19:01 schrieb Mason Hock:
> > \override Voice.Accidental.stencil = ##f
> > % music that doesn't need accidentals
> > \override Voice.Accidental.stencil = ##t
> 
> While you can omit accidentals with the first line, you cannot set the
> stencil to true. This prints a warning:
> 
> > warning: type check for `stencil' failed; value `#t' must be of type 
> > `stencil'
> 
> The right thing to do is to revert the override:
> 
> \version "2.18.2"
> {
>   fis
>   \override Accidental.stencil = ##f
>   gis
>   \revert Accidental.stencil
>   cis'
> }

My bad. Thanks.

> 
> Or equivalently in more recent versions:
> 
> \version "2.19.80"
> {
>   fis
>   \omit Accidental
>   gis
>   \undo \omit Accidental
>   cis'
> }
> 
> 
> Cheers,
> Joram
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


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


Re: Avoid accidentals in cadenza

2018-10-07 Thread Mason Hock
On 10/07, Helge Kruse wrote:
> I am trying to typeset the Fantasia (op.35) of Louis Spohr.
> (http://ks.imslp.net/files/imglnks/usimg/0/01/IMSLP164842-PMLP294545-SpohrOp35edHoly.pdf)
> 
> 
> There is a cadenza starting at page 8 (excerpt attached) with a lot of
> tight notes. I would like to avoid spreading the nodes over more lines
> than in the original because this would affect the flow and understanding.
> 
> I nearly managed to enter the notes. But there are accidentals in the
> second lines that are not necessary. How can I avoid them?

Does this

\override Voice.Accidental.stencil = ##f
% music that doesn't need accidentals
\override Voice.Accidental.stencil = ##t

work for you?

> \version "2.19.65"
> \language "deutsch"
> 
> global = {
>   \key es \major
>   \tiny
> }
> 
> staffUpper = { \change Staff="upper" }
> staffLower = { \change Staff="lower" }
> 
> upper = \relative c'' {
>   \global
>   \cadenzaOn
>   s4*7 -\tweak #'stencil #(ly:make-stencil '() '(0 . 0.1) `(0 . ,4) ) _""
>   |
>   s8*7
>   |
>   \tiny
>   s4 s16
>   ces,16[ es ges]
>   ces[ ges es ces]
>   ces'[ ges es ces]
>   ces'[ ges es ces]
>   ces'[ ges es ces]
>   r ces[ es ges]
>   ces[ ges es ces]
>   s1.. s16
>   \cadenzaOff
> }
> 
> lower = \relative c {
>   \global
>   \cadenzaOn
> 
>   \clef "bass" f,8 \f [ as16 h ] d f[ as h]
>   \staffUpper d f[ as h] d \stemUp f16[ as h]  d[ h as f]
>   \stemDown d[ h as f] \stemNeutral
>   d[ \staffLower h as f]
>   % No line break here. Let's keep it like the IMSP version.
>   %\bar "" \break
> 
>   f,16 \pp [ as32 h! ] d \stemUp f[ as h]
>   \staffUpper d f[ as h!] d \stemUp f[ as h!]  d[ h as f]
>   \stemDown d[ h! as f] \stemUp
>   d[ \staffLower h as f]
>   \bar "" \break
> 
>   % second line
>   ges,8[ ces16 es] ges  s4 \clef treble es''4 ges ces es2.
>   % No line break here. Let's keep it like the IMSP version.
>   %\bar "" \break
>   \clef bass
> 
>   g8[\f b16 des]  % avoid b accidental
>   e[ g b  \staffUpper des]% avoid g,b accidental
>   e g[ b des] e g[ b des] % avoid b accidental
>   e[ des b g]
>   es[ des b g]% avoid g accidental
>   f[ des \staffLower b ges]
>   \bar "" \break
> 
>   \cadenzaOff
> }
> 
> \score {
>   \new PianoStaff <<
> \new Staff = "upper" \upper
> \new Staff = "lower" { \clef bass \lower }
>   >>
>   \layout { }
> }
> 
> In the second line all B notes are flat and in the second half of that
> line all G notes are natural.
> 
> Best regards
> Helge


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



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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-09 Thread mason
On 08/09, liebre...@grossmann-venter.com wrote:
> You are right, the snippet is public domain and I rather follow that path
> than getting involved in mysterious MIT licenses.

There's nothing particularly mysterious about the license. It is not a copyleft 
license, so unlike the GPL it does not ensure that the code will remain free 
when redistributed, but it is still a freedom-respecting license.

If anything, "public domain" is unclear (when referring to copyrightable works 
whose copyright has not expired). Copyright is automatic in countries that 
signed the Berne Convention. Different countries have different processes for 
relinquishing one's copyright. In some countries it's not possible at all. 
"Public domain" could informally mean that the author simply does not intend to 
enforce their copyright, or it could mean that they have formally given up 
their copyright in one or more countries, which is not useful information 
unless we know which ones.


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-09 Thread mason
On 08/09, liebre...@grossmann-venter.com wrote:
> If you still remember, what is the name of the snippet?

The name is "Roman numerals for analysis" and this[1] is the link, although I 
can't promise that it will work any better with lyluatex.

Mason

[1] http://lsr.di.unimi.it/LSR/Snippet?id=710


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-09 Thread mason
On 08/09, liebre...@grossmann-venter.com wrote:
> Mason,
> Although, you indicated you dont intend to continue with your code which is
> a pit, it is what I will have to use in the man time.

Are you referring to the first link I shared? That was to a snippet from the 
LSR. See here[1] for more information on what the LSR is. I don't know who the 
author of that snippet is, but it was not me. David's code appears to be an 
extension of that snippet, so while I have gotten a lot of use out of the 
original snippet I will use his superior one instead from now on.

> I understand
> the GNU license, but I ask anyway. I might want to extend your code to what
> I need rather than to write a completely new routine and I will post back
> the changes to you as the license require if I use your code.

Neither of the snippets in this thread are under the GPL. Lilypond itself is 
GPLv3, but LSR snippets are public domain and David's code is MIT. If you are 
worried that you might be using the latter in an objectional way, David N is 
the one you should talk to, although as David K pointed out you are unlikely to 
be sued over copyright here.

Also, not that it matters in this context, I don't think that the GPL requires 
you to return your modifications to the original author. I suggest reading 
more[2][3][4] about this license.

> "roman_numeral_analysis_tool.ily" clashes with lyluatex and does not
> compile.

I've never used lyluatex (though I plan to eventually) so I'm afraid that I 
can't help you with this.

> I will definitely not be using "roman_numeral_analysis_tool.ily" as it does
> not work with lyluatex which is a prerequisite for me.
> I will post a file showing that for David's perusal as it doesnt solve my
> problem at all and I will rather write my own.

I suspect that it would be easier to debug roman_numeral_analysis_tool.ily 
until it works with lyluatex than to start from scratch. Either way, I'd be 
interested to see what you come up with.

Good luck,

Mason

[1] http://lsr.di.unimi.it/LSR/html/whatsthis.html
[2] https://www.gnu.org/licenses/quick-guide-gplv3.html 
[3] https://www.gnu.org/philosophy/pragmatic.html
[4] https://www.gnu.org/licenses/quick-guide-gplv3.html


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-07 Thread mason
On 08/07, liebre...@grossmann-venter.com wrote:
> The problem has been solved by Mason

The problem was pretty much entirely solved by David N. I'm glad that the very 
minor change I made got it closer to what you need, but you should thank him 
for writing the excellent \include.

Sorry for getting the thread off-topic by bringing up the license. David K is 
correct that it was notrelevant to my point. What I should have said is that 
the snippet can be tweaked for your use case, and that this doesn't require 
criticism of something that has been shared with you that was written with a 
different case in mind. That's all.

Best,

Mason


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-07 Thread mason
Forgot to copy list.

On 08/06, ma...@masonhock.com wrote:
> On 08/06, liebre...@grossmann-venter.com wrote:
> > Sure, but from a programming point of view it is better to have all
> > characters the same size, then if in the exponent or subscript then shrink
> > them.
> 
> That makes sense when rendering characters in general, which is what \markup 
> is for and how it behaves. What we're discussing is a tool for roman numeral 
> analysis, and in roman numeral analysis the diminished and half-diminished 
> symbols are always superscripts. The syntax is well-optimized for normal 
> usage. I wouldn't want to have to specify that half diminished symbol as a 
> superscript when the superscript position should be the default placement.
> 
> > It is my personal choice to use it like that regardless of what the
> > Conservatoire requires.
> > I sometime need the half diminished and diminished as the only character
> 
> Then it's a good thing that David shared his code as free (as in freedom[1]) 
> software, so that it can be modified for your unique use case. Even without 
> understanding Scheme, it wasn't too hard for me to copy/paste/modify the 
> functions for "h" and "o" to create "H" and "O" which produce larger versions 
> of the symbol while leaving "h" and "o" intact for normal usage. If you wish, 
> you can tweak the size of the symbols further by experimenting with the 
> numbers in the paragraphs beginning with "#(define 
> (make-diminished-large-markup font-size)" and "#(define 
> (make-half-diminished-large-markup font-size)".
> 
> The modified file is attached, and example usage is below.
> 
> -
> \version "2.19.82"
> \language "english"
> 
> \include "roman_numeral_analysis_tool.ily"
> 
> bassline = \relative c' {
>   \key c \minor
>   \clef bass
>   c, b c d |
>   ef f g c, |
> }
> 
> analysis = \lyricmode {
>   \markup \rN { i } 
>   \markup \rN { O 7 }
>   \markup \rN { i } 
>   \markup \rN { V 6 4 }
>   \markup \rN { i 6 } 
>   \markup \rN { H 6 5 }
>   \markup \rN { V }
>   \markup \rN { i }
> }
> 
> \score {
>   \new Staff <<
> \new Voice = "bass" { \bassline }
> \new Lyrics \lyricsto "bass" { \analysis }
>   >>
> } 
> -
> 
> Mason
> 
> [1] https://www.gnu.org/philosophy/free-sw.html

> 
> %% A function to create Roman numerals for harmonic analysis.
> %%
> %% Syntax: \markup \rN { ...list of symbols... }
> %%
> %% List symbols in this order (as needed): Roman numeral (or note name),
> %% quality, inversion figures from top to bottom, "/" (if a secondary
> %% function), Roman numeral (or note name).  Usually, you can skip unnecessary
> %% items, though a spacer may be needed in some cases.  Use "" instead of the
> %% initial symbol to start with the quality or inversion, for example.  
> Elements
> %% must be separated by whitespace.
> %%
> %% Notenames are represented by their English LilyPond names.  In addition, 
> you
> %% may capitalize the name for a capitalized note name.
> %%
> %% Preceding a string representing a Roman numeral with English alterations
> %% (f, flat, s, sharp, ff, flatflat, ss, x, sharpsharp, natural)
> %% will attach accidentals, for example, "fVII" -> flat VII; "sharpvi" -> 
> sharp vi.
> %% You may precede inversion numbers with alterations, though "+" is not
> %% presently supported.
> %%
> %% Qualities: use "o" for diminished, "h" for half-diminished, "+" for 
> augmented,
> %% and "f" for flat.  Other indications are possible such as combinations of 
> "M"
> %% and "m" (M, m, MM7, Mm, mm, Mmm9, etc.); add, add6, etc.
> %%
> %% To scale all numerals: \override  LyricText #'font-size = #2
> %% or \override  TextScript #'font-size = #2
> %% To scale individual numerals: \markup \override #'(font-size . 2) \rN { 
> ... }
> 
> 
> 
>  THE APPROACH %%
> 
> %% In our approach, a Roman numeral consists of
> 
> %% 1. A "base".  OPTIONAL. This may be a Roman numeral (some combination of 
> I, i, V,
> %% and v, unenforced); a note name; or some other string.  Roman numerals may 
> be
> %% preceded by an accidental, and a note name may be f

Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-07 Thread mason
On 08/06, liebre...@grossmann-venter.com wrote:
> Sure, but from a programming point of view it is better to have all
> characters the same size, then if in the exponent or subscript then shrink
> them.

That makes sense when rendering characters in general, which is what \markup is 
for and how it behaves. What we're discussing is a tool for roman numeral 
analysis, and in roman numeral analysis the diminished and half-diminished 
symbols are always superscripts. The syntax is well-optimized for normal usage. 
I wouldn't want to have to specify that half diminished symbol as a superscript 
when the superscript position should be the default placement.

> It is my personal choice to use it like that regardless of what the
> Conservatoire requires.
> I sometime need the half diminished and diminished as the only character

Then it's a good thing that David shared his code as free (as in freedom[1]) 
software, so that it can be modified for your unique use case. Even without 
understanding Scheme, it wasn't too hard for me to copy/paste/modify the 
functions for "h" and "o" to create "H" and "O" which produce larger versions 
of the symbol while leaving "h" and "o" intact for normal usage. If you wish, 
you can tweak the size of the symbols further by experimenting with the numbers 
in the paragraphs beginning with "#(define (make-diminished-large-markup 
font-size)" and "#(define (make-half-diminished-large-markup font-size)".

The modified file is attached, and example usage is below.

-
\version "2.19.82"
\language "english"

\include "roman_numeral_analysis_tool.ily"

bassline = \relative c' {
  \key c \minor
  \clef bass
  c, b c d |
  ef f g c, |
}

analysis = \lyricmode {
  \markup \rN { i } 
  \markup \rN { O 7 }
  \markup \rN { i } 
  \markup \rN { V 6 4 }
  \markup \rN { i 6 } 
  \markup \rN { H 6 5 }
  \markup \rN { V }
  \markup \rN { i }
}

\score {
  \new Staff <<
\new Voice = "bass" { \bassline }
\new Lyrics \lyricsto "bass" { \analysis }
  >>
} 
-

Mason

[1] https://www.gnu.org/philosophy/free-sw.html

%% A function to create Roman numerals for harmonic analysis.
%%
%% Syntax: \markup \rN { ...list of symbols... }
%%
%% List symbols in this order (as needed): Roman numeral (or note name),
%% quality, inversion figures from top to bottom, "/" (if a secondary
%% function), Roman numeral (or note name).  Usually, you can skip unnecessary
%% items, though a spacer may be needed in some cases.  Use "" instead of the
%% initial symbol to start with the quality or inversion, for example.  Elements
%% must be separated by whitespace.
%%
%% Notenames are represented by their English LilyPond names.  In addition, you
%% may capitalize the name for a capitalized note name.
%%
%% Preceding a string representing a Roman numeral with English alterations
%% (f, flat, s, sharp, ff, flatflat, ss, x, sharpsharp, natural)
%% will attach accidentals, for example, "fVII" -> flat VII; "sharpvi" -> sharp 
vi.
%% You may precede inversion numbers with alterations, though "+" is not
%% presently supported.
%%
%% Qualities: use "o" for diminished, "h" for half-diminished, "+" for 
augmented,
%% and "f" for flat.  Other indications are possible such as combinations of "M"
%% and "m" (M, m, MM7, Mm, mm, Mmm9, etc.); add, add6, etc.
%%
%% To scale all numerals: \override  LyricText #'font-size = #2
%% or \override  TextScript #'font-size = #2
%% To scale individual numerals: \markup \override #'(font-size . 2) \rN { ... }



 THE APPROACH %%

%% In our approach, a Roman numeral consists of

%% 1. A "base".  OPTIONAL. This may be a Roman numeral (some combination of I, 
i, V,
%% and v, unenforced); a note name; or some other string.  Roman numerals may be
%% preceded by an accidental, and a note name may be followed by one.

%% 2. a quality indicator.  OPTIONAL.  Eventually, this will simply be 
something to
%% set as a superscript following the base, whether or not it is actually a
%% indicator of quality.

%% 3. A single inversion number, or more than one, to be set as a column.  
OPTIONAL.
%% An initial accidental is supported.  (This will be extended to "anything you 
want
%% to appear in a column after the quality indicator.")

%% 4. "/" followed by a "secondary base" for indicating tonicization.  OPTIONAL.
%% As with 1. this may a Roman numeral or note name, and may includ

Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-06 Thread mason
On 08/06, liebre...@grossmann-venter.com wrote:
> I dont want to go through the process of installing a package 

You don't need to install anything. Just put "roman_numeral_analysis_tool.ily" 
in the same directory as your lilypond file, and put 

\include "roman_numeral_analysis_tool.ily"

in your lilypond file after your version statement. 

> and then find
> it is not what I need.

Having already started using it, I'm pretty sure it's what you want. It does 
everything the lsr snippet does and adds some additional functionality.

Mason


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-06 Thread mason
On 08/06, David Nalesnik wrote:
> Speaking of this snippet, I'll point you to the vastly reworked version here:
> https://github.com/davidnalesnik/lilypond-roman-numeral-tool

This looks great. Thank you!

Mason


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-06 Thread mason
On 08/06, liebre...@grossmann-venter.com wrote:
> Where can I find the complete Symbol list?
> Your post basically solved my problem, but I could not find a complete list
> in the Lilypond Manual for Analysis.

The snippet is not part of Lilypond itself, so it might not be documented in 
the manual, but the symbols are listed in the comments at the top of the 
snippet. However, David's version looks better. It's what I'll be using from 
now on.

Mason


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-06 Thread mason
On 08/06, liebre...@grossmann-venter.com wrote:
> It is a bit above my head to get involved in extensions, but how do I call
> this function you list in your post from a Lilypond file ?

The simplest way to use it would be to copy/paste the scheme code into your 
Lilypond file and use it as it is used in the snippet. However, to avoid 
cluttering your Lilypond file I would put the scheme code in a separate file 
and include it using "\include" as explained here: 
http://lilypond.org/doc/v2.18/Documentation/notation/including-lilypond-files

Mason


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


Re: Lilypond & Halfdiminished/Diminished symbols.

2018-08-06 Thread mason
On 08/06, liebre...@grossmann-venter.com wrote:
> What I need is how to place  the Diminished symbol as text (the \emptyset
> symbol in LaTeX) above the staff for progressions. Similar problem would be
> how to indicate the Classical Inversion symbols above the staff.

Is this snippet similar to what you're going for?

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

Mason



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


Re: [Frescobaldi] MIDI playback setup

2018-08-06 Thread mason
On 08/06, Simon Albrecht wrote:
> Hello everybody,
> 
> I just took another shot at configuring MIDI playback in Frescobaldi. Before
> the last ubuntu reinstall I performed, I had the good fortune that it worked
> by simply starting `timidity -iA` on the command line, then refreshing MIDI
> output ports in Frescobaldi’s MIDI options and selecting one.
> 
> This doesn’t work anymore – I can start timidity -iA but Frescobaldi ‘can’t
> see it’.
> 
> So I went to
> <https://github.com/wbsoft/frescobaldi/wiki/MIDI-playback-on-Linux> and
> followed what seemed to be the simplest instructions: installed fluidsynth,
> qsynth, and the soundfont, started the Qsynth GUI, selected pulseaudio as
> audio driver – but the result is the same: apparently no MIDI output port is
> visible to Frescobaldi.
> 
> What can I do?
> 
> Thanks in advance, best regards
> Simon

Is libportmidi0 installed?

Mason


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


Re: how to refer to partial first bar using edition-engraver

2018-07-23 Thread Mason Hock
Thanks for looking into it, and thanks as always for your work on 
edition-engraver.

Mason

On 07/23, Jan-Peter Voigt wrote:
> Hello Mason,
> 
> once again I have to dive deep into this. It is an issue I thought it
> was solved, but obviously it isn't. The right way to address a time in a
> partial bar would be
> \editionMod all 1 #(ly:make-moment -1/8) score.Score \mark "mark3"
> 
> but this doesn't work here (anymore) ... I hope to find the solution soon!
> 
> Cheers,
> Jan-Peter
> 
> Am 23.07.2018 um 00:09 schrieb Mason Hock:
> > I have a score beginning with an 8th note pickup and want to place a \mark 
> > above the first note using edition-engraver. Edition-engraver appears to 
> > consider the first complete bar to be bar "1" and the timing mark "2 0/4" 
> > places tweaks at the beginning of the second complete bar. Therefore, my 
> > instinct was to use "0 7/8" for the bar/beat timing, but nothing appeared 
> > whether I used \mark or \markup. Next I tried "0 0/4" and got the same 
> > result. Interestingly, "1 0/4" places a \markup above the first complete 
> > bar, which is what I expected, but it places \mark in two locations, over 
> > the first note and over the clef. Placing a \mark over the first complete 
> > bar directly in the music, as opposed to using edition-engraver, places it 
> > as expected.
> > 
> > What is the correct way to place an editionMod in a partial bar? Here is a 
> > minimal example of the resutls described above:
> > 
> > --
> > \version "2.21.0"
> > 
> > \include "oll-core/package.ily"
> > \loadPackage edition-engraver
> > 
> > \editionMod all 2 0/4 score.staff.Voice ->
> > \editionMod all 2 0/4 score.staff.Voice \f
> > \editionMod all 0 0/4 score.Score ^\markup { "markup1" }
> > \editionMod all 0 0/4 score.Score \mark "mark1"
> > \editionMod all 0 7/8 score.Score ^\markup { "markup2" }
> > \editionMod all 0 7/8 score.Score \mark "mark2"
> > \editionMod all 1 0/4 score.Score ^\markup { "markup3" }
> > \editionMod all 1 0/4 score.Score \mark "mark3"
> > 
> > \consistToContexts #edition-engraver Score.Staff.Voice
> > \addEdition all
> > 
> > \score {
> >   <<
> >   \new Staff \with { \editionID staff }
> > \relative c' {
> >   \partial 8 d8 |
> >   d4\mark "mark4" d d d |
> >   d d d d
> > }
> >   >>
> >   \layout {
> > indent = 18\mm
> > \context {
> >   \Score
> >   \editionID score
> > }
> >   }
> > }
> > --
> > 
> > Thanks,
> > 
> > Mason
> > 
> > 
> > 
> > ___
> > 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


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


how to refer to partial first bar using edition-engraver

2018-07-22 Thread Mason Hock
I have a score beginning with an 8th note pickup and want to place a \mark 
above the first note using edition-engraver. Edition-engraver appears to 
consider the first complete bar to be bar "1" and the timing mark "2 0/4" 
places tweaks at the beginning of the second complete bar. Therefore, my 
instinct was to use "0 7/8" for the bar/beat timing, but nothing appeared 
whether I used \mark or \markup. Next I tried "0 0/4" and got the same result. 
Interestingly, "1 0/4" places a \markup above the first complete bar, which is 
what I expected, but it places \mark in two locations, over the first note and 
over the clef. Placing a \mark over the first complete bar directly in the 
music, as opposed to using edition-engraver, places it as expected.

What is the correct way to place an editionMod in a partial bar? Here is a 
minimal example of the resutls described above:

--
\version "2.21.0"

\include "oll-core/package.ily"
\loadPackage edition-engraver

\editionMod all 2 0/4 score.staff.Voice ->
\editionMod all 2 0/4 score.staff.Voice \f
\editionMod all 0 0/4 score.Score ^\markup { "markup1" }
\editionMod all 0 0/4 score.Score \mark "mark1"
\editionMod all 0 7/8 score.Score ^\markup { "markup2" }
\editionMod all 0 7/8 score.Score \mark "mark2"
\editionMod all 1 0/4 score.Score ^\markup { "markup3" }
\editionMod all 1 0/4 score.Score \mark "mark3"

\consistToContexts #edition-engraver Score.Staff.Voice
\addEdition all

\score {
  <<
  \new Staff \with { \editionID staff }
\relative c' {
  \partial 8 d8 |
  d4\mark "mark4" d d d |
  d d d d
}
  >>
  \layout {
    indent = 18\mm
\context {
  \Score
  \editionID score
}
  }
}
--

Thanks,

Mason


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


Re: Interactive PDF Link to Notes in Preview

2018-07-07 Thread Mason Hock
On 07/07, Zone Dremik wrote:
> Click-to-View was such a valuable feature. I could click on notes, chord 
> symbols or lyrics, and the URI link would open the correct .ly file and 
> highlight the exact text-code. (My oldest files date from 2009. I've been 
> enjoying this feature a long time, and really miss it.)

Have you tried Frescobaldi?


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


Re: edition-engraver: multiple editions

2018-07-01 Thread Mason Hock
On 07/01, Jan-Peter Voigt wrote:
> Hi Mason,
> 
> thank you for the hint what has to be explained more concisely in the
> docs that are still waiting for there incarnation.
> 
> In you examples activation of the editions is done with
> `\addEdition first`. To only apply edition `second` you can omit
> `\addEdition first` or comment that out.
> The command `\editionMod first ...` does not need `\addEdition first` to
> compile.

I see. I incorrectly assumed that \addEdition declares a set of edition-mods, 
but it makes much more sense that it applies them. Thanks for clarifying.

> Now the idea of the edition-engraver is to separate layout-mods and
> editorial stuff from the content. So in a real project one or more files
> containing the bare music definitions, e.g. `wind.fluteI = \relative {
> c''8 b a ... }`, are included in a file starting the typesetting for a
> specific edition.
> All editionMods (for all editions) may be placed in another
> include-file. Now in the file to typeset the specific edition either
> `\addEdition first` for each needed collection of mods is added or in
> one command `\setEditions first.second`.
> So any edition receives is typeset from its own source file. Those files
> are quite short containing the paper, layout and edition settings and
> the actual score-creating command.
> 
> IIRC I once created one file to create multiple PDFs with different
> editions activated and different paper sizes, but that is really tricky.

With the piece I'm currently working, on I'm attempting something similar using 
a bash script that iterates through every paper/tablet size, constructs \paper, 
prepends \version, appends \score, and tells lilypond to compile. Now I can 
also have it include a file containing the appropriate \addEdition statements.

Thanks for creating this very valuable tool. Lilypond is already far more 
powerful than any other scorewriter, but edition-engraver takes it to a whole 
other level.

Mason

> And in production I always use different files for separate editions.
> 
> HTH
> Jan-Peter


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


edition-engraver: multiple editions

2018-06-30 Thread Mason Hock
I'm slowly getting a handle on edition-engraver, largely thanks to this[1] 
guide, which very clearly explains basic usage for a single edition. However, 
neither the guide nor the usage examples in the repo demonstrate the use of 
multiple editions, and I'm confused as to how that would be done in a useful 
way. For example, these two snippets

--
\version "2.19.82"

\include "oll-core/package.ily"
\loadPackage edition-engraver

\addEdition first
\editionMod first 1 0/4 the-staff.Voice ^\markup { 1 }
\editionMod first 1 2/4 the-staff.Voice ^\markup { 2 }

\consistToContexts #edition-engraver Staff.Voice

\score {
  \new Staff \with { \editionID the-staff } {
\relative c' {
  c d e f
}
  }
}
--

--
\version "2.19.82"

\include "oll-core/package.ily"
\loadPackage edition-engraver

\addEdition first
\editionMod first 1 0/4 the-staff.Voice ^\markup { 1 }

\addEdition second
\editionMod second 1 2/4 the-staff.Voice ^\markup { 2 }

\consistToContexts #edition-engraver Staff.Voice

\score {
  \new Staff \with { \editionID the-staff } {
\relative c' {
  c d e f
}
  }
}
--

produce identical output, so, in the way I've been using edition-engraver so 
far, defining multiple editions does not appear to have a different effect from 
placing all edition-mods in one edition. It is true that I could put the 
edition-mods for each edition in a separate .ily file and only include the one 
I want to use when I compile, but even then there is no reason that the edition 
in each file could be called "first" instead of giving the editions different 
names.

My expectation would be that there is a way of specifying which editions(s) 
should have their edition-mods observed and which should be ignored, but I 
can't find any information about this. Can anyone provide an example of correct 
usage of edition-engraver to maintain multiple editions?

Thanks,

Mason


[1] https://lists.gnu.org/archive/html/lilypond-user/2018-01/msg00603.html


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


glissando or something similar in drummmode

2018-06-27 Thread Mason Hock
I'm working on a percussion piece in which the performers play, in addition to 
unpitched percussion instruments, roto toms, which they occasionally play with 
one hand while adjusting the pitch of the other in order to achieve a glissando 
effect. Only the direction, maxima, and minima of the glissando is important, 
not the specific pitch at a given moment, so when this effect is used the 
performers would prefer to switch from a 5-line percussion staff to a 1-line 
staff indicating the rhythm and drawing the glissando direction.

Below is what I have so far. I'm happy with the transition to a 1-line staff 
and the notation of rhythm with headless stems, but the gliss line does not 
render. It makes sense that the gliss line would not render; since this is a 
DrumStaff the notes do not represent pitches, making a glissando meaningless. 
However, I do want to use a DrumStaff for the upitched passages, and I'm not 
sure how to turn DrumStaff into a Staff in the middle of the music.

Can anyone suggest (a) a better approach than what I'm trying or (b) a hack to 
make the glissando engraver draw glissandi between noteheads that Lilypond does 
not think represent pitches?

Thanks,

Mason 


\version "2.19.82"

drumPitchNames.cy = #'cymbal
drumPitchNames.br = #'brakedrum
drumPitchNames.to = #'tom
drumPitchNames.ro = #'rototom
drumPitchNames.rt = #'rototomtop
drumPitchNames.ba = #'bassdrum
drumPitchNames.ta = #'tamtam

#(define drumstaff
  '((cymbal xcircle #f   3)
(brakedrum  cross   #f   1)
(tomdefault #f  -1)
(rototomdefault #f   0)
(rototomtop default #f   4)
(timpanidefault #f  -4)
(bassdrum   default #f  -3)
(tamtam harmonic-mixed  #f  -3)))

rotogliss = {
  \stopStaff
  \override Staff.StaffSymbol.line-positions = #'(0)
  \startStaff
}

normalstaff = {
  \stopStaff
  \revert Staff.StaffSymbol.line-positions
  \startStaff
}

glon = {
  \override NoteColumn.glissando-skip = ##t
  \hide NoteHead
}

gloff = {
  \revert NoteColumn.glissando-skip
  \undo \hide NoteHead
}

notes = \drummode {
  ba4 r   |
  to16 to to to 8  ro ro ro ro |
  \rotogliss
  ro \glissando \glon ro ro ro ro ro ro ro |
  \gloff rt16 rt rt rt rt8 \glissando \glon ro ro ro ro ro |
  ro ro ro ro \gloff \normalstaff ro ro ro ro |

}

\score {
   \new DrumStaff
\with {
  drumStyleTable = #(alist->hash-table drumstaff)
}
\notes
  \layout {}
}



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


Re: Reusability of lilypond code?

2018-06-27 Thread Mason Hock
On 06/27, Ben wrote:
> Mason,
> 
> Does that mean for every piece of yours you have separate dynamic contexts
> for every single instrument? I'd imagine that could possibly clutter up your
> score a bit, no?
> 
> To have many dynamic context variables mapped to all their appropriate
> instruments, just curious how you manage it all? Do you only pick a few
> dynamic contexts for main instruments, or really all?
> 
> Interested to hear more :)

I try to avoid clutter by breaking my project into many .ily files, each either 
containing one kind of information or fulfilling one role in piecing together 
the project. For example, each instrument has one file containing all of its 
notes and one file containing all of its dynamics. These files are included in 
another file defining that instrument's staff, which looks like this:

---
\new Staff { \include "../music/instrument-name/notes.ily" }
\new Dynamics \with {
  \override VerticalAxisGroup.staff-affinity = #UP 
} { \include "../music/instrument-name/dynamics.ily" }
---

This file is in turn included in another file that puts together that 
instrument's part, like this: 

---
\score {
  <<
\include "../staves/instrument.ily"
  >>
  \layout {}
}
---

as well as the file that puts together the score, which contains something like 
this:

---
\score {
  <<
\include "../staves/instrument.ily"
\include "../staves/another-instrument.ily"
\include "../staves/a-third-instrument.ily"
\include "../staves/etc.ily"
  >>
  \layout {}
}
---

As an example of how I organize all this, here's the project setup for the 
piece I'm about to start engraving: 
https://notabug.org/chaosmonk/untouchable-space

This isn't the final setup. I'll make the score and part generation more 
modular and give instruments edition-mods.ily files once all the notes are in 
and I start tweaking and creating editions for different paper/tablet sizes.

I'd be interested to hear about other approaches. How do you normally manage 
your projects with respect to dynamics and in general?


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


Re: Reusability of lilypond code?

2018-06-27 Thread Mason Hock
On 06/27, lyuser.theg...@spamgourmet.com wrote:
> But I have one issue with the reuse of my work. My last score e.g. has
> four voices (T1, T2, B1, B2). I assign music and lyrics for each voice
> to a variable and combine them info a choir staff. So for our
> rehearsal, everybody can see all the voices.
> 
> There are other usecases, where I would like to have only one
> voice per staff. I can do that with lilypond, of course, by reusing
> the variables that I created before.
> 
> Now comes the problem:
> 
> For the "one voice per staff" solution (and for midi files, by the
> way), the single voices have to be annotated with all "bells and
> whistles", like dynamics, for example.
> 
> But for the "four voices per staff", all the annotations would pile
> up (one 'p' above the other 'p' for the two tenor voices, for example)
> and with all the duplicated dynamic, hairpins, markup, the score would
> become unreadable.

I typically use a separate Dynamics staff, which can then be attached once to 
any music staff as appropriate. This will also align dynamics vertically, which 
is my preference. Notice that in the third example the p is not aligned with 
the other dynamics.

-
\version "2.19.82"

notesA = \relative c' {
  a'2. a4 | a
}

notesB = \relative c' {
  d2. d4 | a
}

dynamics = {
  s2\fp\< s4 s\f s\p
}

notesBdynamics = \relative c' {
  d2.\fp\< d4\f a\p
}

\score {
  <<
\new Staff \notesA
\new Dynamics \with {
  \override VerticalAxisGroup.staff-affinity = #UP 
} \dynamics
\new Staff \notesB
\new Dynamics \with {
  \override VerticalAxisGroup.staff-affinity = #UP 
} \dynamics
  >>
  \layout { }
}

\score {
  <<
\new Staff \partcombine \notesA \notesB
\new Dynamics \with {
  \override VerticalAxisGroup.staff-affinity = #UP 
} \dynamics
  >>
  \layout { }
}

\score {
  <<
\new Staff \notesBdynamics
  >>
  \layout { }
}
-


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


proper use of segno with multiple instruments

2018-06-16 Thread Mason Hock
I think that D.C, D.S, and segno marks conventionally do not appear on each 
stave, but usually either above each staff group or the entire system. If this 
is not the case, what is the convention? If it is the case, then I have some 
questions about how to achieve this.

While I don't have a complete grasp on contexts, I think that my question might 
be generalized to "How to I make something belong to the Score context?" It 
seems that things that belong to the Score context, such as Volta_engraver, 
appear only above the system, even if they are included in the music for every 
staff. This snippet[1] seems to demonstrate how to make such information appear 
above a particular staff, but I'm having trouble finding a way to do the 
opposite. Also, since Volta_engraver is an engraver while \segno and ^\markup { 
D.S. al fine } are staff objects it is possible that I'm on the wrong track 
completely.

Guidance would be much appreciated.

Thanks,

Mason

[1] 
http://lilypond.org/doc/v2.19/Documentation/snippets/repeats#repeats-volta-multi-staff




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


Re: reference for well-shaped slurs

2018-06-11 Thread Mason Hock
Thanks for your response, Andrew. 

Since you say that you use \shapeII frequently, I wonder if you ever find that 
\shapeII creates an upside-down slur
 like in the first example of mt previous message, or that it sometimes causes 
systems to appear on top of each oth
er, as below? Are these bugs, or am I doing something wrong? Do you have a fix 
or workaround?

Thanks,

Mason

---
\version "2.19.81"
\language "english"

\include "oll-core/package.ily"
\loadModule bezier.shapeII

\relative c' {
  c'16(^\markup\tiny { The end points are too far from the noteheads. } g' c 
c,) c16( g' c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)()()(h)) Slur
  c16(^\markup\tiny { Now the slur collides with a notehead. } g' c c,) c16( g' 
c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)()(0 1.5)(h)) Slur
  c16(^\markup\tiny { Collision fixed, but slur does not follow melodic 
contour. } g' c c,) c16( g' c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)(2 .5)(1.2 1)(h)) Slur
  c16(^\markup\tiny { But I'm not sure that this is correct either. } g' c c,) 
c16( g' c c,) c16( g' c c,) c16(^\markup\tiny { bug? } g' c c,) |

  \accidentalStyle neo-modern
  \tuplet 10/8 { ctqs'8([^\markup\tiny { Slurs collide with accidentals. } 
aqs') cs,( a') cqs,( aqf') c,( af') bqs,( gqs')] } |
  \shapeII #'(()(0 3)(0 3)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny { Need to handle each accidental 
differently.
 } aqs') cs,( a') cqs,( aqf') c,( af') bqs,( gqs')] } |
  \break
  \shapeII #'(()()(0 1.5)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny{ But should I shape each slur around the 
accidental? } aqs')
 \shapeII #'(()()(-0.5 2)()) Slur
 cs,( a')
 \shapeII #'(()()(1 3)()) Slur
 cqs,( aqf')
 \shapeII #'(()(1 1)(-0.3 2.7)()) Slur
 c,( af')
 \shapeII #'(()(0.5 0)(0 1.5)()) Slur
 bqs,( gqs')] } |
  \shapeII #'(()(0 1.2)(0 1.2)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny{ And how far should the slur be from the 
accidental? }^\markup\tiny{ Or should same melodic gesture have similar slur 
shape? } aqs')
 \shapeII #'(()(0 1.5)(0 1.5)()) Slur
 cs,( a')
 \shapeII #'(()(0 3)(0 3)()) Slur
 cqs,( aqf')
 \shapeII #'(()(0 2)(0 2)()) Slur
 c,( af')
 \shapeII #'(()(0 1)(0 1)()) Slur
 bqs,( gqs')] } |
}
---


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


reference for well-shaped slurs

2018-06-11 Thread Mason Hock
\shapeII works very well for tweaking ugly slurs. The only problem is that, 
while it is easy to identify "bad" slurs, I find it difficult to determine what 
makes a slur "good." It seems that the more time I spend tweaking a slur the 
more I overthink it and the less sure I am of how it should look. Some examples 
are below.

I'm finding it surprisingly difficult to find well-engraved scores that deal 
with the scenarios I'm running into. Can anyone share a high-quality score that 
contains a lot of slurs? A lilyponded score using \shape II would be amazing, 
but even a pdf of a good score would be a helpful reference.

I'd also be interested to hear from anyone who is experienced with \shapeII 
about their thought process and workflow. Specifically;
- In which situations do you choose to tweak a slur instead of accepting the 
default?
- What factors do you consider when shaping a slur (collisions, contour of 
noteheads, etc.)?
- In what sitations do you use polar vs cartesian coordinates?
- Any general advice on predicting how changes to control points will affect 
certain details of a slur apart from trial and error?

Thanks,

Mason

- example 1 ---
\version "2.19.81"

\include "oll-core/package.ily"
\loadModule bezier.shapeII

\relative c' {
  c'16(^\markup\tiny { The end points are too far from the noteheads. } g' c 
c,) c16( g' c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)()()(h)) Slur
  c16(^\markup\tiny { Now the slur collides with a notehead. } g' c c,) c16( g' 
c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)()(0 1.5)(h)) Slur
  c16(^\markup\tiny { Collision fixed, but slur does not follow melodic 
contour. } g' c c,) c16( g' c c,) c16( g' c c,) c16( g' c c,) |
  \shapeII #'((h)(2 .5)(1.2 1)(h)) Slur
  c16(^\markup\tiny { But I'm not sure that this is correct either. } g' c c,) 
c16( g' c c,) c16( g' c c,) c16(^\markup\tiny { bug? } g' c c,) |
}
---

- example 2 ---
\version "2.19.81"
\language "english"

\include "oll-core/package.ily"
\loadModule bezier.shapeII

\relative c' {
  \accidentalStyle neo-modern
  \tuplet 10/8 { ctqs'8([^\markup\tiny { Slurs collide with accidentals. } 
aqs') cs,( a') cqs,( aqf') c,( af') bqs,( gqs')] } |
  \shapeII #'(()(0 3)(0 3)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny { Need to handle each accidental 
differently.
 } aqs') cs,( a') cqs,( aqf') c,( af') bqs,( gqs')] } |
  \break
  \shapeII #'(()()(0 1.5)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny{ But should I shape each slur around the 
accidental? } aqs')
 \shapeII #'(()()(-0.5 2)()) Slur
 cs,( a')
 \shapeII #'(()()(1 3)()) Slur
 cqs,( aqf')
 \shapeII #'(()(1 1)(-0.3 2.7)()) Slur
 c,( af')
 \shapeII #'(()(0.5 0)(0 1.5)()) Slur
 bqs,( gqs')] } |
  \shapeII #'(()(0 1.2)(0 1.2)()) Slur
  \tuplet 10/8 { ctqs,8([^\markup\tiny{ And how far should the slur be from the 
accidental? }^\markup\tiny{ Or should same melodic gesture have similar slur 
shape? } aqs')
 \shapeII #'(()(0 1.5)(0 1.5)()) Slur
 cs,( a')
 \shapeII #'(()(0 3)(0 3)()) Slur
 cqs,( aqf')
 \shapeII #'(()(0 2)(0 2)()) Slur
 c,( af')
 \shapeII #'(()(0 1)(0 1)()) Slur
 bqs,( gqs')] } |
}
---


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


Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

2018-05-20 Thread Mason Hock
On 05/20, Urs Liska wrote:
> I will find the code when I'm back home - and Piaras won't be faster ...

Great! Thank you, Urs.

Mason

> Am 20. Mai 2018 18:49:28 MESZ schrieb Mason Hock <ma...@masonhock.com>:
> >On 05/20, Urs Liska wrote:
> >> Hi Mason,
> >> 
> >> I'm not *fully* clear what you want to achieve, but the attached is
> >> something Piaras Hoban once shared with the list.
> >
> >Thanks for your response, Urs. This looks very close to what I need. If
> >I can modify the solution so that the glissando terminates on an
> >ordinary note (as opposed to a grace note) then it will be perfect.
> >
> >> If this is (close to) what
> >> you need you might search the archives for posts by him.
> >
> >In the archives I have found a post[1] by Piaras linking to a pdf of
> >various effects, including this one, but it does not include the code
> >used to acheive these effects. I also found a post[2] of yours in which
> >you demonstrate the syntax as
> >
> >\stemmedGlissando #'(15 . #f) c'4 
> >
> >which looks great, and state that Piaras wrote this function when you
> >asked for such a function on the list. However, I was unable to find
> >the thread in which he provided you with this function. Do you still
> >have the code?
> >
> >Piaras, I have cc'd you in case you can help out. I'll be very grateful
> >if either of you can provide the code for stemmedGlissando.
> >
> >Thanks,
> >
> >Mason
> >
> >[1]
> >https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00313.html 
> >[2]
> >https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00252.html
> >
> >> Good luck
> >> Urs
> >> 
> >> 
> >> Am 19.05.2018 um 23:16 schrieb Mason Hock:
> >> > \version "2.19.81"
> >> > \language "english"
> >> > 
> >> > % starts an extended glissand
> >> > glon = {
> >> >\override NoteColumn.glissando-skip = ##t
> >> >\hide NoteHead
> >> >\override NoteHead.no-ledgers = ##t
> >> >\override Stem.thickness = #0.5
> >> >\override Accidental #'stencil = ##f
> >> > }
> >> > % terminates an extended glissando
> >> > gloff = {
> >> >\revert NoteColumn.glissando-skip
> >> >\undo \hide NoteHead
> >> >\revert Glissando #'stencil
> >> >\revert NoteHead.no-ledgers
> >> >\revert Stem.thickness
> >> >\revert Accidental #'stencil
> >> > }
> >> > % slightly increase slope of glissando so that line is
> >> > % not perfectly horizontal when glissing between notes
> >> > % on same staff line/space
> >> > glup = { \once\override Glissando.extra-dy = #0.5 }
> >> > gldown = { \once\override Glissando.extra-dy = #-0.5 }
> >> > 
> >> > \relative c' {
> >> >\glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g
> >a } |
> >> >\gloff a a \gldown a \glissando \glon a a a \gloff af4 |
> >> >\gldown af2 \glissando \gldown g4( \glissando \glon f |
> >> >e) \gloff e r2 |
> >> > }
> >> 
> >
> >
> >> ___
> >> 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



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


Re: Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

2018-05-20 Thread Mason Hock
On 05/20, Urs Liska wrote:
> Hi Mason,
> 
> I'm not *fully* clear what you want to achieve, but the attached is
> something Piaras Hoban once shared with the list.

Thanks for your response, Urs. This looks very close to what I need. If I can 
modify the solution so that the glissando terminates on an ordinary note (as 
opposed to a grace note) then it will be perfect.

> If this is (close to) what
> you need you might search the archives for posts by him.

In the archives I have found a post[1] by Piaras linking to a pdf of various 
effects, including this one, but it does not include the code used to acheive 
these effects. I also found a post[2] of yours in which you demonstrate the 
syntax as

\stemmedGlissando #'(15 . #f) c'4 

which looks great, and state that Piaras wrote this function when you asked for 
such a function on the list. However, I was unable to find the thread in which 
he provided you with this function. Do you still have the code?

Piaras, I have cc'd you in case you can help out. I'll be very grateful if 
either of you can provide the code for stemmedGlissando.

Thanks,

Mason

[1] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00313.html 
[2] https://lists.gnu.org/archive/html/lilypond-user/2014-10/msg00252.html

> Good luck
> Urs
> 
> 
> Am 19.05.2018 um 23:16 schrieb Mason Hock:
> > \version "2.19.81"
> > \language "english"
> > 
> > % starts an extended glissand
> > glon = {
> >\override NoteColumn.glissando-skip = ##t
> >\hide NoteHead
> >\override NoteHead.no-ledgers = ##t
> >\override Stem.thickness = #0.5
> >\override Accidental #'stencil = ##f
> > }
> > % terminates an extended glissando
> > gloff = {
> >\revert NoteColumn.glissando-skip
> >\undo \hide NoteHead
> >\revert Glissando #'stencil
> >\revert NoteHead.no-ledgers
> >\revert Stem.thickness
> >\revert Accidental #'stencil
> > }
> > % slightly increase slope of glissando so that line is
> > % not perfectly horizontal when glissing between notes
> > % on same staff line/space
> > glup = { \once\override Glissando.extra-dy = #0.5 }
> > gldown = { \once\override Glissando.extra-dy = #-0.5 }
> > 
> > \relative c' {
> >\glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
> >\gloff a a \gldown a \glissando \glon a a a \gloff af4 |
> >\gldown af2 \glissando \gldown g4( \glissando \glon f |
> >e) \gloff e r2 |
> > }
> 


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



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


Need edition-engraver-compatible extended glissandi, will pay for solution if necessary

2018-05-19 Thread Mason Hock
In my music, I frequently use
- glissandi during which the performer rearticulates with a particular rhythm, 
represented with headless steams
- glissandi that extend longer than a bar or otherwise require intermediate 
headless stems to clarify duration, with a slur indicating that the performer 
should not rearticulate

My current solution is based on the hack[1] recommended in the documentation. 
Here is an example:


\version "2.19.81"
\language "english"

% starts an extended glissand
glon = {
  \override NoteColumn.glissando-skip = ##t
  \hide NoteHead
  \override NoteHead.no-ledgers = ##t
  \override Stem.thickness = #0.5
  \override Accidental #'stencil = ##f
}
% terminates an extended glissando
gloff = {
  \revert NoteColumn.glissando-skip
  \undo \hide NoteHead
  \revert Glissando #'stencil
  \revert NoteHead.no-ledgers
  \revert Stem.thickness
  \revert Accidental #'stencil
}
% slightly increase slope of glissando so that line is
% not perfectly horizontal when glissing between notes
% on same staff line/space
glup = { \once\override Glissando.extra-dy = #0.5 }
gldown = { \once\override Glissando.extra-dy = #-0.5 }

\relative c' {
  \glup c8 \glissando \glon c-_ d-_ e-_ \tuplet 5/4 { e-_ f-_ g g a } |
  \gloff a a \gldown a \glissando \glon a a a \gloff af4 |
  \gldown af2 \glissando \gldown g4( \glissando \glon f |
  e) \gloff e r2 |
}


This hack has several flaws.
- The stems are all different distances from the glissando line.
- Articulations have a noticably inconsistent slope.
- Selecting the least-bad pitch for each hidden note is tedious.
- Even slight changes to horizontal spacing can ruin the vertical position of 
the hidden notes.
- The position of a stem is not musical content and should not be represented 
by a pitch.

These flaws add up to a serious problem: Not only is the stem placement 
regardless of which hidden pitches I choose, but because horizontal spacing 
affects which pitches are least-bad, there is no way to choose the hidden 
pitches to be optimal for multiple editions. In order to fix this with edition 
engraver, I would have to tweak each stem individually for each edition, which 
would not realistically be maintainable. 

A proper implementation of extended glissandi would place each intermediate 
stem a fixed distance from the gliss line. It would also be nice to tweak the 
slope of all gliss lines globally, something I can not do now because the 
extra-dy value is different for ascending and descending glissandi, but this 
would be a convenience, not a necessity.

The ideal syntax would resemble this:

   c8 \gliss-end c c c c \gliss-end f

and result in a gliss from c to f, where
- the intermediate eighth note stems are all exactly the same distance from the 
gliss line
- the slope of the gliss line is slightly increased like in my example above

However, the bare minimum I need is for the stems to be automatically 
positioned vertically, and (if I need to tweak the slope manually) for them to 
be positioned relative to the gliss line *after the slope tweak*.

I don't understand Scheme or Lilypond's internals well enough to do this 
myself. If the solution is non-trivial for someone who does know Scheme and and 
Lilypond well, enough, I am willing to pay them for their time spent on the 
solution. The solution could be in the form of an include, or a feature of 2.19.

If anyone can help me with this, please let me know approximately how many 
hours of work you would expect it to take and what you would consider fair 
compensation for the amount of time spent.

Thanks,

Mason 

[1] 
http://lilypond.org/doc/v2.19/Documentation/notation/expressive-marks-as-lines#glissando


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


Re: Lilypond interfaces

2018-04-17 Thread Mason Hock
On 04/17, Amir Teymuri wrote:
> Hello,
> 
> does anyone knows about interfaces and/or notation systems written in other
> programming languages which use lilypond as backend?

GNU Denemo is a graphical frontend to Lilypond.

http://denemo.org/

Mason

> Two examples of such
> interfaces are fomus (https://common-lisp.net/project/fomus/doc/)
> and abjad (http://projectabjad.org/).
> 
> cheers,
> Amir
> 
> 
> - - - - - - - - - - -
> ateymur...@gmail.com
> - - - - - - - - - - -
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


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


Re: The search for an API

2018-04-11 Thread Mason Hock
On 04/11, Johan Vromans wrote:
> On Wed, 11 Apr 2018 07:07:10 -0700, Mason Hock <ma...@masonhock.com> wrote:
> 
> > Is this the sort of thing you're looking for?
> > 
> > http://projectabjad.org/
> 
> When looking for an API that makes detailed handling of scores possible,
> yes.
> 
> However, I got the idea that OP was looking for an easy way to transform a
> LP "scorelet" into an SVG, something that can be quite trivially obtained
> by shelling out to LP.

Yes, it's because it's trivial that I assumed he was instead looking for a way 
to generate the lilypond code itself, but rereading the OP I think you're right.

Mason

> 
> This is exactly how tools like OOLilyPond do it.
> 
> -- Johan
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


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


Re: The search for an API

2018-04-11 Thread Mason Hock
Is this the sort of thing you're looking for?

http://projectabjad.org/

Mason

On 04/10, Felix D. wrote:
> Hello Lilypond-Fans,
> 
> I have a question: Does Lilypond have an API that can be simply called from
> other programs to render some markup (stored as a string) into a SVG file?
> 
> We want to use Lilypond in an Unity app/game, wich will be used by many
> musicians and thus requires some decent staff rendering. We basically
> program in C#, but there is an easy bridge to interface with C/C++
> libraries. So calling an API should not be a huge problem, but does it even
> exist and is documented somewhere?
> 
> I asked in the IRC a few hors ago, and received a brief "No, it doesn't
> exist". Bit is that really the abrupt end of the story, or is there some
> other possibility to call Lilypond from an external program?
> 
> Cheers
> Felix D.

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



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


Re: Force Lilypond to preserve vertical order of TextScripts?

2018-02-18 Thread Mason Hock
On 02/18, Saul Tobin wrote:
> This is exactly the sort of situation I'm talking about. You're correct
> that the order doesn't change the meaning, just as changing the vertical
> order of instruments in the score doesn't change the scoring. But there is
> a strong convention of how to order different types of text instructions

Indeed, but as layout these decisions are not part of the musical information. 
When you include these instuctions in an include file containing the musical 
content of a player's part, you are only indicating that and when these 
instructions apply. If the order in which you enter the instructions were to 
affect their placement in the score, one of Lilypond's greatest strengths, the 
ability to separate layout from content, would be compromised. Any override to 
Lilypond's behavior that applies to the entire score is better off done 
globally, in a separate file from those containing content.

Mason

> (who plays first, then instrument changes, then technical instructions,
> then style of expression), similar to the conventions for score order. You
> don't want a "solo" indication buried in between three technical
> instructions, because it could easily get missed by sightreading players.
> Also, in a full score if several staves have the same three text
> instructions, it is more readable if they are in the same vertical order
> for each staff.
> 
> On Sun, Feb 18, 2018 at 5:51 PM, Mason Hock <ma...@masonhock.com> wrote:
> 
> > > Indeed. However, the vertical order of expressions is part of content,
> > not
> > > a purely graphical layout issue.
> >
> > With the composer:content::editor:layout, vertical order of expressions
> > seems like layout for most cases that come to mind. A composer might decide
> > to have a violist switch to arco and ponticello simultaneously. The
> > vertical order of those expressions does not affect what the violist does.
> > I struggle to think of a situation in which the vertical order of
> > simultaneous instructions would change the meaning of those instructions.
> >

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


Re: 2.19.81 tarball updates?

2018-02-18 Thread Mason Hock
This link doesn't work for you?

http://download.linuxaudio.org/lilypond/source/v2.19/

Mason

On 02/18, Ben wrote:
> 
> On 2/18/2018 2:42 PM, Mason Hock wrote:
> > downloads.linuxaudio.org is working again, and the mirrors they host 
> > including Lilypond's are back up. However, the newest version up there is 
> > still 2.19.80. When will 2.19.81 be added?
> > 
> > Thanks,
> > 
> > Mason
> > 
> > 
> 
> Hi,
> 
> It's still down for me here
> 
> 


> ___
> 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


2.19.81 tarball updates?

2018-02-18 Thread Mason Hock
downloads.linuxaudio.org is working again, and the mirrors they host including 
Lilypond's are back up. However, the newest version up there is still 2.19.80. 
When will 2.19.81 be added?

Thanks,

Mason


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


how to donate to lilypond and/or openlilylib development?

2018-02-10 Thread Mason Hock
This link

http://lilypond.org/sponsoring.html

describes paying developers to implement specific features. Is this the only 
way to contribute to Lilypond financially, or is it possible to make a general 
donation, ideally a small recurring monthly donation, to Lilypond and/or 
openlilylib?

Thanks,

Mason

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


independent horizontal spacing between staves

2018-01-14 Thread Mason Hock
I have a piece in which each performer reads from a score with the other 
players' staves shrunk. I have determined that the different staff sizes are 
the cause of some very bad horizontal spacing that is especially noticeable 
when players have different simultaneous tuplets. The other parts are included 
for reference only and horizontal alignment is not important. Fixing each 
instance of bad spacing manually via scaling would quickly become, even with 
edition-engraver. It seems that the simplest solution would be

(1) make the horizontal spacing of the larger staff independent of the smaller 
staves, but retain alignment among the smaller staves,

or if this is not possible the next best thing would be

(2) make the horizontal spacing of all staves independent of each other.

I have found some old threads saying that this is not possible, but thought I 
would see if this has changed by now.

Thanks,

Mason


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


Re: edition-editor usage

2017-12-29 Thread Mason Hock
Mason Hock:
> Urs Liska:
>>
>> Actually I do not see why any of this should be incompatible. Both 
>> page-layout and partial-compilation *use* the EE. Maybe it is a naming 
>> conflict somehow. 
> 
> Here's a reduced example of what I have. Can you spot what I'm doing wrong?
> 
> \version "2.19.80"
> \include "oll-core/package.ily"
> \loadPackage edition-engraver
> \loadPackage partial-compilation
> \loadModule page-layout.conditional-breaks
> \loadModule bezier.shapeII
> 
> \addEdition violinI
> \editionMod violinI 1 2/4 score.violinI.Voice \once \shapeII #'(()()(p
> 110 1.5)()) Slur
> \consistToContexts #edition-engraver Score.StaffGroup.Staff.Voice
> 
> % the problem persists whether or not the breakset has the same name as
> the edition
> \registerBreakSet violinI
> \setBreaks violinI page-breaks #'(56)
> \setBreaks violinI line-breaks #'(7 14 21 28 35 42 49)
> \applyConditionalBreaks violinI
> \setClipPage violinI 1
> 
> \score {
>   \new StaffGroup {
> <<
>   \new Staff \with { instrumentName = "Violin 1" \editionID violinI }
>   \relative c'' { c c c( d) \repeat unfold 252 c }
> 
>   \new Staff \with { instrumentName = "Violin 2" }
>   \relative c'' { \repeat unfold 256 c }
> >>
>   }
>   \layout {
> \context {
>   \Score
>   \editionID score % removing this line fixes conditional-breaks and
>% partial-compilation but breaks edition-engraver
> }
>   }
> }
> 

Urs,

Is there somewhere I can access your solution described here?

http://lilypondblog.org/2015/01/partially-compiling-a-lilypond-score/

It no longer appears to be in snippets or the deprecated openlilylib repo.

Thanks,

Mason

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


Re: edition-editor usage

2017-12-27 Thread Mason Hock
Urs Liska:
> 
> 
> Am 27. Dezember 2017 18:32:00 MEZ schrieb Mason Hock <masonh...@gmail.com>:
>>> I usually use the EE to
>>> set the needed breaks:
>>> \editionModList breaksForTargetX sing.with.bach.Score \break 5,9,13,17
>>
>> Thanks, Jan-Peter. This works well, except that partial-complication
>> relied on the break sets defined with page-layout.conditional-breaks.
>> Do
>> you know if it is possible for partial-complication use breaks defined
>> with edition-engraver?
> 
> 
> Actually I do not see why any of this should be incompatible. Both 
> page-layout and partial-compilation *use* the EE. Maybe it is a naming 
> conflict somehow. 

Here's a reduced example of what I have. Can you spot what I'm doing wrong?

\version "2.19.80"
\include "oll-core/package.ily"
\loadPackage edition-engraver
\loadPackage partial-compilation
\loadModule page-layout.conditional-breaks
\loadModule bezier.shapeII

\addEdition violinI
\editionMod violinI 1 2/4 score.violinI.Voice \once \shapeII #'(()()(p
110 1.5)()) Slur
\consistToContexts #edition-engraver Score.StaffGroup.Staff.Voice

% the problem persists whether or not the breakset has the same name as
the edition
\registerBreakSet violinI
\setBreaks violinI page-breaks #'(56)
\setBreaks violinI line-breaks #'(7 14 21 28 35 42 49)
\applyConditionalBreaks violinI
\setClipPage violinI 1

\score {
  \new StaffGroup {
<<
  \new Staff \with { instrumentName = "Violin 1" \editionID violinI }
  \relative c'' { c c c( d) \repeat unfold 252 c }

  \new Staff \with { instrumentName = "Violin 2" }
  \relative c'' { \repeat unfold 256 c }
>>
  }
  \layout {
\context {
  \Score
  \editionID score % removing this line fixes conditional-breaks and
   % partial-compilation but breaks edition-engraver
}
  }
}

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


Re: edition-editor usage

2017-12-27 Thread Mason Hock
>I usually use the EE to
>set the needed breaks:
>\editionModList breaksForTargetX sing.with.bach.Score \break 5,9,13,17

Thanks, Jan-Peter. This works well, except that partial-complication
relied on the break sets defined with page-layout.conditional-breaks. Do
you know if it is possible for partial-complication use breaks defined
with edition-engraver?

Thanks,

Mason

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


Re: edition-editor usage

2017-12-26 Thread Mason Hock
Thanks for clarifying, Jan-Peter. I think the point I was most confused
on was the x.y.z notation, but you response helped a lot. I now have
edition engraver working with

\addEdition violinI-letter
\editionMod violinI-letter 9 0/8 score.violinI.Voice \once \shapeII
#'(()()(p 110 .6)()) Slur

\consistToContexts #edition-engraver Score.ChoirStaff.Staff.Voice

and

'\editionID violinI' inside of the \with for violin I

and

\context {
  \Score
  \editionID score
}

inside \layout

however, once I added

\context {
  \Score
  \editionID score
}

I lost my page and line breaks defined with
page-layout.conditional-breaks. This happens whether or not the break
set and edition have different names. Are these two libraries
compatible? If so, what is the proper way to use them together.

Thanks for your help, and thanks for developing this tool. Once I get
comfortable using it I'd be happy to help out with the documentation.

Mason

Jan-Peter Voigt:
> Hello Mason,
> 
> it is possible to use \shapeII with the edition-engraver :-)
> And it sounds like this is the use case the EE is originally meant for.
> 
> Yes, the wording is a bit inconsistent and/or irritating. I will try to
> sum it up:
> In the recent versions I used the terms target and context to divide two
> dimensions. The target names the requested output like for example
> 'fullscore' or 'violinI-part'. If you "activate" an edition-target with
> \addEdition violinI-part it uses all modifications that look like
> \editionMod violinI-part{ \shapeII
> ... }
> 
> This is a real example I used inside the piano reduction:
> \editionMod klavier 38 0/8 chor.ten.TenorStaff \once \shapeII #'(()(0 .
> 1)()()) Slur
> It means:
> with edition-target 'klavier' (the piano reduction) in measure 38 the
> first eighth apply the shapeII-command inside the context identified by
> 'chor.ten.TenorStaff'.
> Moments are counted zero-based, so the first moment is zero. This might
> irritating on first sight, but it is meaningful as the distance from the
> beginning of the measure. The context in the example above is the tenor
> staff inside the choir-staff.
> 
> I think the main point is understanding the three dimensions:
> 1. the edition-target - that is the condition if to apply the
> modification ... apply this modification for the score of type T(arget)
> 2. the edition-context - that is where to apply the modification ... the
> LilyPond context like Voice, Staff, Score etc.
> 3. the time - that is the musical timestamp when to apply the
> modification ... moment X inside measure Y
> 
> HTH
> 
> I will send more details and information soon!
> But for today and tomorrow I wish you a merry Christmas and all the best
> for 2018!
> 
> Jan-Peter
> 
> 
> Am 23. Dezember 2017 20:09:29 MEZ schrieb Mason Hock <masonh...@gmail.com>:
> 
>I have a piece in which each performer reads from a version of the score
>with their staff full-sized with the other parts on small staves. This
>pieces also requires a lot of manual tweaking of slurs.
> 
>I've been using \shapeII for the slurs, which works great, except that
>if I shape the slur correctly for the full-sized version of the part it
>is shaped incorrectly for the small version of the part and vice versa.
>In order for the slurs to look good in both situations I need two sets
>of \shapeII tweaks.
> 
>edition-editor looks like a promising solution, but I'm having trouble
>learning how to use it. The only documentation I can find is the usage
>examples here.
> 
>   
> https://github.com/openlilylib/edition-engraver/tree/master/usage-examples
> 
>Each example is very specific, which makes it difficult to decode how
>edition-engraver works in general. I guess my questions are
> 
>(1) Will edition-engraver work for tweaking slurs with \shapeII?
> 
>(2) If so, what should be my approach in terms of organization? My guess
>would be to have 8 editions, a full-size version and small version for
>each of the 4 staves, where each pdf uses 1 full-size edition and 3
>small editions.
> 
>(3) How do I make certain 'editions' (at this point I'm questioning
>whether I'm using that term correctly) apply to certain staves in
> each pdf?
> 
>(4) What is the basic syntax for using edition-editor? It's difficult to
>tell from the examples in the repo what is the basic syntax and what is
>extending it.
> 
>Thanks to anyone who can clarify.
> 
>Mason
> 
> 
>
> 
>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


edition-editor usage

2017-12-23 Thread Mason Hock
I have a piece in which each performer reads from a version of the score 
with their staff full-sized with the other parts on small staves. This 
pieces also requires a lot of manual tweaking of slurs.


I've been using \shapeII for the slurs, which works great, except that 
if I shape the slur correctly for the full-sized version of the part it 
is shaped incorrectly for the small version of the part and vice versa. 
In order for the slurs to look good in both situations I need two sets 
of \shapeII tweaks.


edition-editor looks like a promising solution, but I'm having trouble 
learning how to use it. The only documentation I can find is the usage 
examples here.


https://github.com/openlilylib/edition-engraver/tree/master/usage-examples

Each example is very specific, which makes it difficult to decode how 
edition-engraver works in general. I guess my questions are


(1) Will edition-engraver work for tweaking slurs with \shapeII?

(2) If so, what should be my approach in terms of organization? My guess 
would be to have 8 editions, a full-size version and small version for 
each of the 4 staves, where each pdf uses 1 full-size edition and 3 
small editions.


(3) How do I make certain 'editions' (at this point I'm questioning 
whether I'm using that term correctly) apply to certain staves in each pdf?


(4) What is the basic syntax for using edition-editor? It's difficult to 
tell from the examples in the repo what is the basic syntax and what is 
extending it.


Thanks to anyone who can clarify.

Mason


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


Re:\magnifyStaff for dynamics?

2017-12-21 Thread Mason Hock

Resending this with the correct subject line.

Thanks for your response.

For dynamics within the staff that isn't necessary, as \magnifyStaff 
works fine.


\version "2.19.63"
\score {
<<
  \new Staff \with { \magnifyStaff #(magstep -2) }
  \relative c' { c\p\< c c c\f }
  >>
}

The issue is changing the size of a separate dynamics staff. Changing 
the font size was my solution in 2.18,


\version "2.18.2"
<<
  \new Staff \with {
fontSize = -3
\override StaffSymbol.staff-space = #(magstep -3)
\override StaffSymbol.thickness = #(magstep -3)
  }
  \relative c'' { c4 c c c}
  \new Dynamics \with {
fontSize = -3
\override Hairpin.height = #(magstep -3)
\override Hairpin.thickness = #(magstep -3)
  }
  { s4\p\< s s s\f }
>>

but I was hoping to use 2.19's \magnifyStaff to simplify this.

Mason


Date: Wed, 20 Dec 2017 21:27:38 -0500
From: Ben <soundsfromso...@gmail.com>
To: lilypond-user@gnu.org
Subject: Re: \magnifyStaff for dynamics?
Message-ID: <6c63c15d-9bd7-8893-d58a-24da56f09...@gmail.com>
Content-Type: text/plain; charset="utf-8"; Format="flowed"


You could use something like this to change the font of the dynamics
too?

<<
\new Staff {
  \relative c'' {
\dynamicDown
c8\ff c c c c c c c
  }
}
\new Staff \with {
  *fontSize = #-3 \override StaffSymbol.staff-space = #(magstep -3)*
} {
  \clef bass
  c8 c c c c\f c c c
}
http://lsr.di.unimi.it/LSR/Item?id=399








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


Re: lilypond-user Digest, Vol 181, Issue 111

2017-12-21 Thread Mason Hock

Thanks for your response.

For dynamics within the staff that isn't necessary, as \magnifyStaff 
works fine.


\version "2.19.63"
\score {
<<
  \new Staff \with { \magnifyStaff #(magstep -2) }
  \relative c' { c\p\< c c c\f }
  >>
}

The issue is changing the size of a separate dynamics staff. Changing 
the font size was my solution in 2.18,


\version "2.18.2"
<<
  \new Staff \with {
fontSize = -3
\override StaffSymbol.staff-space = #(magstep -3)
\override StaffSymbol.thickness = #(magstep -3)
  }
  \relative c'' { c4 c c c}
  \new Dynamics \with {
fontSize = -3
\override Hairpin.height = #(magstep -3)
\override Hairpin.thickness = #(magstep -3)
  }
  { s4\p\< s s s\f }
>>

but I was hoping to use 2.19's \magnifyStaff to simplify this.

Mason


Date: Wed, 20 Dec 2017 21:27:38 -0500
From: Ben <soundsfromso...@gmail.com>
To: lilypond-user@gnu.org
Subject: Re: \magnifyStaff for dynamics?
Message-ID: <6c63c15d-9bd7-8893-d58a-24da56f09...@gmail.com>
Content-Type: text/plain; charset="utf-8"; Format="flowed"


You could use something like this to change the font of the dynamics
too?

<<
\new Staff {
  \relative c'' {
\dynamicDown
c8\ff c c c c c c c
  }
}
\new Staff \with {
  *fontSize = #-3 \override StaffSymbol.staff-space = #(magstep -3)*
} {
  \clef bass
  c8 c c c c\f c c c
}
http://lsr.di.unimi.it/LSR/Item?id=399






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


\magnifyStaff for dynamics?

2017-12-20 Thread Mason Hock

\version "2.19.63"
\score {
  <<
\new Staff \with { \magnifyStaff #(magstep -3) }
\relative c' { c c c c }
\new Dynamics \with { \override VerticalAxisGroup.staff-affinity = 
#UP }

{ s\p\< s s s\f}
  >>
}

shrinks the music staff as expected but does not shrink the dynamics staff.

\version "2.19.63"
\score {
  <<
\new Staff \with { \magnifyStaff #(magstep -3) }
\relative c' { c c c c }
\new Dynamics \with { \override VerticalAxisGroup.staff-affinity = 
#UP \magnifyStaff #(magstep -3)}

{ s\p\< s s s\f}
  >>
}

gives

In procedure ly:context-property in expression (ly:context-property 
Staff (quote magnifyStaffValue)):


/home/mason/.guix-profile/share/lilypond/2.19.63/scm/music-functions.scm:2513:19 
<1>: Wrong type argument in position 1 (expecting Context): #f


Exited with return code 1.


Is there a way to magnify the dynamics staff by the same factor as the 
music staff?


Thanks,

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


Re: different margins for even/odd pages

2017-11-05 Thread Mason Hock
It seems that my mistake was not including the '\' before 'mm'. Once I 
added that it worked as expected.


Thanks,

Mason

On Sun, Nov 5, 2017 at 5:52 PM, Kieren MacMillan 
<kieren_macmil...@sympatico.ca> wrote:

Hi Mason,

 Actually could you clarify how the outer margin works in two-sided 
mode? I would expect

 two-sided = ##t
 inner-margin = 0mm
 outer-margin = 0mm
 binding-offset = 0mm


Did you actually try that code, exactly as written, and get no error?
With what version, exactly?

Regardless, this works as expected for me:

  SNIPPET BEGINS
\version "2.19.80"

\paper {
  two-sided = ##t
  inner-margin = 0\mm
  outer-margin = 0\mm
  binding-offset = 0\mm
}

\repeat unfold 120 c''4
  SNIPPET ENDS

Hope that helps,
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info

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


Re: different margins for even/odd pages

2017-11-05 Thread Mason Hock
Actually could you clarify how the outer margin works in two-sided 
mode? I would expect


two-sided = ##t
inner-margin = 0mm
outer-margin = 0mm
binding-offset = 0mm

to result in a margin of 0mm on both sides of both even and odd pages. 
The inner margin behaves predictably, but the outer margin is about an 
inch (I'd have to print and measure it to determine the exact value). 
Is there a way to explicitly control the size of the outer margin?


Thanks,

Mason

On Sun, Nov 5, 2017 at 4:26 PM, Mason Hock <masonh...@gmail.com> wrote:

Awesome. Thank you Kieren.

Mason

On Sun, Nov 5, 2017 at 4:25 PM, Kieren MacMillan 
<kieren_macmil...@sympatico.ca> wrote:

Hi Mason,

 I need inner margins to be wider than outer margins to leave room 
for binding, so odd pages should have a wider margin on one side 
and even pages on the other. My workaround has been to render the 
document twice with the two different margin settings and mix/match 
pages. However, I would prefer to ability to define margins per 
page. Is this possible?


<http://lilypond.org/doc/v2.18/Documentation/notation/horizontal-spacing-paper-variables#paper-variables-for-two_002dsided-mode>

Cheers,
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info

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


Re: different margins for even/odd pages

2017-11-05 Thread Mason Hock

Awesome. Thank you Kieren.

Mason

On Sun, Nov 5, 2017 at 4:25 PM, Kieren MacMillan 
<kieren_macmil...@sympatico.ca> wrote:

Hi Mason,

 I need inner margins to be wider than outer margins to leave room 
for binding, so odd pages should have a wider margin on one side and 
even pages on the other. My workaround has been to render the 
document twice with the two different margin settings and mix/match 
pages. However, I would prefer to ability to define margins per 
page. Is this possible?


<http://lilypond.org/doc/v2.18/Documentation/notation/horizontal-spacing-paper-variables#paper-variables-for-two_002dsided-mode>

Cheers,
Kieren.


Kieren MacMillan, composer
‣ website: www.kierenmacmillan.info
‣ email: i...@kierenmacmillan.info

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


different margins for even/odd pages

2017-11-05 Thread Mason Hock
I need inner margins to be wider than outer margins to leave room for 
binding, so odd pages should have a wider margin on one side and even 
pages on the other. My workaround has been to render the document twice 
with the two different margin settings and mix/match pages. However, I 
would prefer to ability to define margins per page. Is this possible?


Thanks,

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


slurs between pairs of notes horizontally close and vertically distant

2017-10-29 Thread Mason Hock
I'm working on a score with many pairs of notes a sixth or seventh 
apart slurred together. When the stem of the second note of a pair is 
down, the slur intersects the accidental. If I increase 
'Slur.details.accidental-collision' the slur avoids the accidental, but 
is not as well-shaped. For most pairs Lilypond acheives a good 
compromise, but sometimes the slur is quite distant from the notes and 
the endpoints of the slur are close to the same height, making it 
unclear that the curve represents a slur between the two pitches.


It seems that the bad slurs occur when there is not a lot of horizontal 
space between the two notes. In the example below, the slur between the 
half notes in the second bar looks much better than the slur between 
the same two pitches as eighth notes in the first bar. Even the third 
and fourth slurs look much better than the first and second because the 
accidentals add just a tiny bit more horizontal space.


From reading this 
<http://lilypondblog.org/2013/11/engraving-challenges-slurs-and-ties> 
it sounds like slurs are very difficult to shape well automatically. 
It's impressive that Lilypond does this well before manual tweaking. 
However, this issue occurs so many times in this score that it would 
take way too long for me to fix each one manually with \shape.


Since Lilypond really only seems to have trouble when the notes are 
very close to each other horizontally, perhaps a way to fix the slurs 
globally would be to set a minimum horizontal space between notes. 
However, Lilypond's horizontal spacing is not the issue and I'd rather 
not override something that it is doing well. Also, I expect that the 
horizontal space needed to fix the slur depends on the vertical 
distance and stem direction of the first note


I would prefer a solution that only affects the slurs. Perhaps the 
issue would be fixed by allowing greater curvature for slurs. For 
example, if the first slur began close to the staff, looped all the way 
around the flat, then came back down and ended close to the second 
notehead, it would look a little odd but would be a large improvement. 
Some of the more adequate slurs might also be improved by this, and I 
don't see any that it would break. I would have no idea how to 
implement this though.


Does anyone have any suggestions?

Thanks,

Mason

%

\version "2.18.2"
\language "english"

% slurs are shaped well but intersect accidentals
\relative c' {
 \accidentalStyle neo-modern
 c'8( af') cqs,( aqf') cs,( a') ctqs,( aqs') |  c,2( af') |
 \tuplet 3/2 {f,4( e') fqs,(} \tuplet 3/2 {eqs') gf,( f')} |
 g,( ef') gqs,8( eqf') gs,( e') |
}

% slurs avoid accidentals but are not well-shaped
\relative c' {
 \accidentalStyle neo-modern
 \override Slur.details.accidental-collision = #30
 c'8( af') cqs,( aqf') cs,( a') ctqs,( aqs') |  c,2( af') |
 \tuplet 3/2 {f,4( e') fqs,(} \tuplet 3/2 {eqs') gf,( f')} |
 g,( ef') gqs,8( eqf') gs,( e') |
}
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: non-triplet tuplets collide with staff

2017-10-29 Thread Mason Hock
Thanks for clarifying. My score only uses triplets for unbeamed notes, 
and I mistakenly misattributed the number and bracket placement to the 
ratio rather than the presence of beams. Next time I'll test with a 
simpler example like the one you include.


Your solution works well in 2.18.2. Thanks!

Mason

On Sun, Oct 29, 2017 at 2:03 AM, Thomas Morley 
<thomasmorle...@gmail.com> wrote:

Hi Mason,

please always state the version you use and a tiny example.
Maybe you would have spotted that

2017-10-28 23:38 GMT+02:00 Mason Hock <masonh...@gmail.com>:
 Lilypond by default seems to place all tuplet numbers/brackets so 
that they
 collide with the staff, with the exception of triplets, which it 
places

 outside the staff.


isn't true.

See
{
\cadenzaOn
\tuplet 2/1 { a4 a }
\tuplet 3/2 { a a a }
\tuplet 4/3 { a a a a }
\tuplet 5/4 { a a a a a }
\tuplet 6/5 { a a a a a a }
\tuplet 7/6 { a a a a a a a }
}
and
{
\tuplet 2/1 { a8 a }
\tuplet 3/2 { a a a }
\tuplet 4/3 { a a a a }
\tuplet 5/4 { a a a a a }
\tuplet 6/5 { a a a a a a }
\tuplet 7/6 { a a a a a a a }
}
Where the TupletBracket is printed depends on whether a Beam is
present or not, presence of other maybe colliding objects etc.
Has nothing to do if being a triplet or anything else.
Btw, what you call collisions is common practice in printed editions.


 I would like all tuplets outside of the staff like
 triplets.



 If I do both

 \override Staff.TupletNumber #'outside-staff-priority = #1
 \override Staff.TupletBracket #'outside-staff-priority = #1

 I get an error: "warning: Cannot set outside-staff-priority for 
element and

 elements' Y parent."



I agree it would be better to set outside-staff-priority for both,
Number and Bracket, and let LilyPond sort it out.
Alas, it doesn't work. You may write a feature-request to the 
bug-list.


For now you could do:

\override TupletBracket.after-line-breaking =
  #(lambda (grob)
(ly:grob-set-property!
  (if (and (ly:stencil-empty? (ly:grob-property grob 
'stencil))

   (ly:grob? (ly:grob-object grob 'tuplet-number)))
  (ly:grob-object grob 'tuplet-number)
  grob)
  'outside-staff-priority
  100))

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


non-triplet tuplets collide with staff

2017-10-28 Thread Mason Hock
Lilypond by default seems to place all tuplet numbers/brackets so that 
they collide with the staff, with the exception of triplets, which it 
places outside the staff. I would like all tuplets outside of the staff 
like triplets.


\override Staff.TupletNumber #'outside-staff-priority = #1

fixes tuplets with no bracket, but for tuplets with a bracket only the 
number appears outside the staff; the bracket still collides with the 
staff.


\override Staff.TupletBracket #'outside-staff-priority = #1

fixes tuplets with a bracket, but for tuplets with no bracket the 
number still collides with the staff.


If I do both

\override Staff.TupletNumber #'outside-staff-priority = #1
\override Staff.TupletBracket #'outside-staff-priority = #1

I get an error: "warning: Cannot set outside-staff-priority for element 
and elements' Y parent."


How can I avoid collisions with the staff for all tuplets, whether or 
not they have a bracket?


Thanks,

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


extended glissandi

2017-10-05 Thread Mason Hock
The method for long glissandi described in the http://lilypond.org/doc/v2.18/Documentation/notation/expressive-marks-as-lines#glissando;>documentation
 (adjusting the pitch of the hidden noteheads to align them with the gliss 
line) has a few disadvantages.

(1) Since each stem can only have one of several discrete vertical positions, 
they can't perfectly align with the gliss. There often has to be either a gap 
or intersection.

(2) The fact that the vertical stem positions do not perfectly follow the slope 
of the gliss becomes very apperent when multiple consecutive stems have 
articulation marks. For instance, if the pitches of the hidden notes are "b-. 
b-. c-. c-. d-." the ascent of the staccato marks is terraced rather than even.

(3) After aligning the stems as well as possible with the above limitations, 
any minor change to the format of the score disturbs the results and requires 
another round of manual tweaking. It's especially frustating when tweaking the 
stems of one glissando slightly affects horizontal spacing and disturbs a 
glissando earlier in the system that has already been aligned.

Lilypond engraves music the way it would be by hand with no need for manual 
tweaking in every situation I've encountered except for this one, so it seems 
inconsistent for the documentation to suggest this method.

I don't expect a feature for automatically aligning stems with the glissando 
any time soon, since this is probably not a common situation for most people. 
However, since I use long glissandi very frequently, it's worth my time to come 
up with a better approach.

I would think that the solution is a function that determines in advance the 
endpoints of the gliss and uses the slope to determine the amount of vertical 
extra-offset needed for each note. However, while I have a little programming 
experience and am willing to learn, I am unfamiliar with Scheme and struggling 
to figure out how to do this. In particular I'm stuck on how to either (a) 
calculate the right endpoint of the gliss before engraving the intermediate 
stems or (b) retroactively adjust the stems after engraving the gliss. Does 
someone with experience extending Lilypond via Scheme have some advice on where 
to start?

Thanks,

Mason

-- 


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


Re: Seeking LilyPond Engravers for Paid Work

2017-09-18 Thread Mason Hock
Sounds good, Chris. You might still consider "paying it forward" with a
license that respects your software's users' freedom
<https://www.gnu.org/philosophy/free-sw.html> as Lilypond respects
yours. If not for your EULA I'd happily engrave for your business and
recommend your product to performers and composers, but I won't press
you further on the issue.

Best wishes and happy engraving.

Mason

On Sun, 2017-09-17 at 12:00 -0700, Chris Crossen wrote:
> > 
> > Do you engrave the Lilypond scores with several different page
> > dimensions in advance and upload them to your app as images, or does
> > your software use Lilypond to render them dynamically? Depending on the
> > extent to which Lilypond is a component of your software, you might want
> > to make sure that your EULA <http://scoremaestro.com/eula> doesn't
> > violate GPLv3.
> 
> Mason,
> 
> We do not render scores dynamically with LilyPond in our app. LilyPond is not 
> a part of our app. LilyPond is one of the tools we use to generate image data 
> that is processed into the format our app uses. 
> 
> We also use Finale and Sibelius if that is the source provided by our 
> clients. We prefer LilyPond for scores we engrave from scratch for quality 
> reasons.
> 
> Chris
> 



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


Re: Seeking LilyPond Engravers for Paid Work

2017-09-17 Thread Mason Hock
Chris,

Do you engrave the Lilypond scores with several different page
dimensions in advance and upload them to your app as images, or does
your software use Lilypond to render them dynamically? Depending on the
extent to which Lilypond is a component of your software, you might want
to make sure that your EULA  doesn't
violate GPLv3.


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


intermediate stem length in long glissando

2017-05-06 Thread Mason Hock
From

http://lilypond.org/doc/v2.18/Documentation/notation/expressive-marks-as-lines#glissando

"If the stems do not align well with the glissando, they may need to be
repositioned slightly."

Is there a way of automatically extending the stems precisely to the gliss
line rather than manually determining which hidden note will get it
closest? I suspect not, but I use enough long glissandi that I thought I'd
ask.

Thanks,

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


Re: widening feathered beams

2017-05-06 Thread Mason Hock
This works great. Thank you.

Mason

On 6 May 2017 at 03:42, Thomas Morley <thomasmorle...@gmail.com> wrote:

> 2017-05-06 4:26 GMT+02:00 Mason Hock <masonh...@gmail.com>:
> > I would like to increase the vertical space between feathered beams. This
> > achieves approximately what I want for left-feathered beaming:
> >
> >   % decelerating
> >   \override Stem.beaming = #(cons (list ) (list 0 3))
> >   \once \override Beam.grow-direction = #LEFT
> >   c16
> >   \override Stem.beaming = #(cons (list 0 3) (list 0 3))
> >   c c
> >   \override Stem.beaming = #(cons (list 0 3) (list ))
> >   c
> >   \revert Stem.beaming
> >
> > but the spacing between the beams and notehead seems strange, and for
> > right-feathered beaming the beams are too low in relation to the stems.
> >
> >   % accelerating
> >   \override Stem.beaming = #(cons (list ) (list 0 3))
> >   \once \override Beam.grow-direction = #RIGHT
> >   c16
> >   \override Stem.beaming = #(cons (list 0 3) (list 0 3))
> >   c c
> >   \override Stem.beaming = #(cons (list 0 3) (list ))
> >   c
> >   \revert Stem.beaming
> >
> > Can anyone suggest a better approach?
> >
> > Thanks,
> >
> > Mason
>
>
>
> Hi,
>
> I'd change Beam.length-fraction:
>
>
> Extended example from NR:
>
> \relative c' {
>
>   \override Beam.length-fraction = 2
>
>   \override Beam.grow-direction = #LEFT
>   \featherDurations #(ly:make-moment 2/1)
>   { c16[ c c c c c c c] }
>   \override Beam.grow-direction = #RIGHT
>   \featherDurations #(ly:make-moment 2/3)
>   { c32[ d e f] }
>   % revert to non-feathered beams
>   \override Beam.grow-direction = #'()
>   { g32[ a b c] }
> }
>
> HTH,
>   Harm
>
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


widening feathered beams

2017-05-05 Thread Mason Hock
I would like to increase the vertical space between feathered beams. This
achieves approximately what I want for left-feathered beaming:

  % decelerating
  \override Stem.beaming = #(cons (list ) (list 0 3))
  \once \override Beam.grow-direction = #LEFT
  c16
  \override Stem.beaming = #(cons (list 0 3) (list 0 3))
  c c
  \override Stem.beaming = #(cons (list 0 3) (list ))
  c
  \revert Stem.beaming

but the spacing between the beams and notehead seems strange, and for
right-feathered beaming the beams are too low in relation to the stems.

  % accelerating
  \override Stem.beaming = #(cons (list ) (list 0 3))
  \once \override Beam.grow-direction = #RIGHT
  c16
  \override Stem.beaming = #(cons (list 0 3) (list 0 3))
  c c
  \override Stem.beaming = #(cons (list 0 3) (list ))
  c
  \revert Stem.beaming

Can anyone suggest a better approach?

Thanks,

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


Re: multiple dynamics contexts

2017-02-09 Thread Mason Hock
Thanks, Simon. That worked.

<<
  \new Dynamics \with { \override VerticalAxisGroup.staff-affinity = #DOWN
} {
% content above staff
  }
  \new Staff {
 % music
  }
  \new Dynamics \with { \override VerticalAxisGroup.staff-affinity = #UP } {
% content below staff
  }
>>

Mason

On 9 February 2017 at 02:06, Simon Albrecht <simon.albre...@mail.de> wrote:

> On 09.02.2017 08:20, Mason Hock wrote:
>
>> there is too much space between the staff and the content below it.
>>
>
> To adjust the spacing between Staff and Dynamics, please have a look at <
> http://lilypond.org/doc/v2.18/Documentation/notation/flexib
> le-vertical-spacing-within-systems>.
>
> HTH, Simon
>
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


multiple dynamics contexts

2017-02-08 Thread Mason Hock
I like the way that a dynamics context organizes content below the staff,
and I would like to simultaneously handle content above the staff
similarly. I find that simply creating a dynamics context before the staff

<<
  \new Dynamics {
% content above staff
  }
  \new Staff {
 % music
  }
>>

works as expected, but when I try to use two dynamics contexts for content
above and below the staff,

<<
  \new Dynamics {
% content above staff
  }
  \new Staff {
 % music
  }
  \new Dynamics {
% content below staff
  }
>>

there is too much space between the staff and the content below it.

Is there a way of using multiple dynamics contexts for one staff and/or a
better way of achieving the results I'm going for?

Thanks,

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


  1   2   >