lilypond-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]