Johannes Asal wrote:
I know that you can include Lilypond material by External Material.
That's ok when you have few notation examples in your text and I
appreciate that someone took the time to implement it. But I'm trying to
write a book about jazz harmonics and therefore I need many musical
examples that have to be changed often in the writing process. The main
problems I have with the External Material approach are the following:
1. It interrupts the creative process, because you need to prepare the
lilypond snippets in another editor and import them afterwards
I understand, as I have the same problem with figures. It is possible to
ease the pain some, though. The external inset has a "edit" button, so
you can click that in order to edit your music snippet. Newer versions
of lyx doesn't have the button, instead you right-click the lilypond
object and select "edit externally" from the menu. So you can "get to
it" from LyX, but it will obviously still be an external application.
You may have to define an editor for .ly files in the preferences.
2. You don't have a preview and therefore it is a bit difficult to see
whether you have written something already or not
Tools->preferences->Graphics, then turn "Instant Preview" ON.
You should now get previews of all external insets, including lilypond
music. This is perhaps turned off by default, for performance reasons.
3. If you have to change one of the snippets, you have to find the
corresponding file
Not really. right-click and select "edit externally" (Or, for older
versions of lyx: click, then use the edit button in the dialog.)
I don't know if it's possible, but the ideal solution (for me) would be
some kind of lilypond environment (somewhat like the math environment),
where you can type in your lilypond code directly. After leaving this
environment, the graphic is rendered and put into place in the LyX
document. If you need to change it, you just click on the graphic and
the code environment pops up again.
This is of course not a simple modification to do, and I guess it
wouldn't be that fun either, but I'm sure it would be a valueable
addition to LyX's feature list because as far as I know there is no
solution today that combines text with music typesetting in a convenient
and straightforward way. I would even volunteer for implementing parts
of it if needed.
Support for lilypond-book would be interesting. And sure - if you
volunteer to do some work then you will get it faster.
This process can be divided into several steps, you won't have to do it
all at once.
1. Work on the support for lilypond-book.
This will have LyX create latex output as usual,
then, add code to run lilypond-book on the produced file
Finally, let LyX run latex/pdflatex on the file produced, as usual.
So this step is mostly about inserting an invocation
of "lilypond-book" into the existing workflow.
At this point, use a new document settings to decide whether
lyx should do this lilypond-book step or not. Many lyx documents
have no lilypond content, and many lyx users don't have lilypond.
Use the latex inset for lilypond code in the beginning.
To enter music, type stuff like
\begin{lilypond} { c d e } \end{lilypond}
There will be no preview so far.
2. With lilypond-book working, start on the lilypond environment.
first figure out if it ought to be a inset, a layout module, or
whatever. I guess an inset will be the way.
Then add the rule about how LyX produces latex code when processing
a lilypond inset. This is easy - just output \begin{lilypond}
followed by the inset contents, followed by \end{lilypond}
At this point, you have working lilypond-book!
3. Some fine-tuning. Remove the document setting that specifies if this
is a lilypond document. Instead, add logic so that LyX will run
lilypond-book whenever the document contains a lilypond inset.
You can perhaps make use of similiar logic that add latex packages
on an as-needed basis.
4. The preview. Arrange so Lyx runs the inset content through
lilypond, and display the resulting .png if this succeeds.
I am not sure how to do this part, but look at how it is done
for math and graphichs insets.
Helge Hafting