[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Lilypond to Braille
From: |
Maurits Lamers |
Subject: |
Lilypond to Braille |
Date: |
Sat, 9 Nov 2013 18:28:28 +0100 |
Hi all,
This subject has already been discussed a quite a few times on this list and
other lists in the past.
This is a new initiative to bring Braille music output to Lilypond. I have been
asked by a few Dutch organisations for people with a visual handicap to look
into how much work it would be and which (technical) difficulties would need to
be solved in order to bring MusicBraille output to Lilypond.
The previous initiative(s) focused on going through MusicXML because there are
already converters for MusicXML to Braille. I would rather generate
MusicBraille directly, because I think it is easier to map Lilypond music
elements to their Braille counterparts directly. I have asked my contacts about
which physical file format would be the best for output, and they have been
suggesting that a plain text file would suffice. This plain text file would
then contain the braille codes which can be sent to a printer, either directly
or through a very simple translation table.
In order to get a (hopefully) well enough understanding of the Lilypond
architecture, I have been reading the Lilypond developers manual, Erik
Sandbergs thesis and the source code to see how this could be achieved. Below
you find a few initial guesses on what approach could be taken.
Scenario 1.
Take the output similar to what \displayMusic generates, and evaluate this
entirely in Guile by replacing the make-music implementation API with code that
generates Braille. This could possibly be achieved by importing an ly file
which replaces the implementation.
Scenario 2.
Write a performer which converts the music information into Braille. If I am
right, this should be written in C++ and added in the same way as the current
midi performers are added to the contexts (as in ly/performer-init.ly). I have
been looking at how this could work, but I still do not really understand how
the lilypond music structure is processed exactly in C++, and whether the
performer will get all required information.
Scenario 3.
Create an output which is similar to Erik Sandbergs idea of music streams and
convert it to Braille.
Scenario 4.
Just take the lilypond syntax and write a separate parser.
Scenario 5.
Write a complete set of engravers for every grob.
From my current understanding of the architecture of Lilypond, I think that
Scenario 2 and 3 would be the least amount of work and the easiest to fit in
with the code tree as is. Scenario 3 depends on whether the music streams have
been implemented, and my searches for it suggest that it is not the case.
Scenario 2 does not seem very easy either, as the entire performer interface
seems to be completely be set up do to midi, and doesn’t really seem to be
intended to be extended to do other kind of performers.
I would really like to know what you think. I am completely open to every type
of suggestion and advice.
Thanks for reading and any replies!
cheers
Maurits
- Lilypond to Braille,
Maurits Lamers <=