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-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel