[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

iPhone app using Lilypond + potential contributions

From: Daniel Grover
Subject: iPhone app using Lilypond + potential contributions
Date: Thu, 18 Mar 2010 17:14:36 -0700

Hey guys,

I just released a new iPhone app that displays music engraved with Lilypond:

It's currently the #4th top selling music app in the app store, and it's gotten 
some decent press this week:

I was a little hesitant to mention this to anyone on the project, since the 
more OSS-minded friends I have usually hate the idea of anybody making money.

So I wanted to first tell you how I'm using it, but also offer up some ways I 
could help Lilypond and contribute back, since I think it's awesome and now 
have an interest in its continued awesomeness.

To get this out of the way: my app is a commercial product under a proprietary 
license, but in compliance with GNU, it does not actually contain any code from 
Lilypond or link with it. Lilypond is only used (in conjunction with my own 
tools) to produce pre-rendered files in the app's format. 

Additionally, probably 70% of the music is from Mutopia, but the converted 
files are offered under the appropriate licenses and attributed to the original 
authors. Right now, the app only displays the name of the license, but I 
reviewed the Creative Commons licenses in more detail and realized the URL has 
to be there too. So I've submitted a 1.0.1 to review for Apple that allows the 
song files to link to the full terms of the CC license, when appropriate. The 
song files will be updated and re-uploaded when 1.0.1 ships.

Hopefully this covers everything! If there's anything I've missed, let me know 
and I will do what I can to correct the situation.

Anyway,  here's what I'd like to offer the Lilypond project, if you're not 
horribly offended by this point:

1) .ly processing code

I ended up having to write a lot of code around Lilypond as part of the song 
converter that runs on Linux. A lot of it is really specific to my task, but 
here's one thing that could be useful.

I wrote the beginnings of a Lilypond parser in Python and a pre-processor that 
performs all the various changes needed to get the music to show up nicely in 
the app. 

It can even do things like inline macros and unroll \repeat blocks (I had to do 
this as kind of a kludge to make the mappings between the midi position -> 
cursor position work out nicely). 

The way it's written is that it performs some basic tokenization but also 
parses out the structure of the file (blocks, comments, quoted strings, etc), 
yet will readily leave sections unparsed. I initially started using a lot of 
regex to do my preprocessing (kinda like the convert-ly script), but found that 
approach to be a little crude and problematic and realized I did need some kind 
of basic parsing/state info to do what I needed, even if I didn't wanna write a 
full parser.

I'd love to try to contribute some of this back -- I could see some of the 
processing tools used to operate on Lilypond files using this (like 
convert-ly). Of course, I think the best approach would be a full-blown, 
all-singing, all-dancing .ly parsing API for languages like Python, but that'd 
be a lot of work. Some guy wrote an ANTLR grammar, but it only seems to work 
with the Java backend. 

2) MusicXML converter improvements
Another area I would love to help out Lilypond with is the MusicXML converter. 
We're in talks with music publishers to make copyrighted music available for 
purchase in the app. A lot of their music is in Sibelius format, but there's a 
plugin called Dolet that seems to do a great job converting to mxml.

The MusicXML->Lilypond converter, however, has problems. Like it seems to make 
duplicates of any dynamic marks used (or even text). And it has problems with 
overlapping slurs marks scores (even if it's just a tie mark overlapped with a 
phrasing slur). And other files I've tried just result in invalid .ly markup 
with no warnings as to why. 

What I'd like to do is add a bunch of regression tests to the existing test 
suite for musicxml2ly, and then either work on it myself, or hire someone to 
contribute these fixes to the Lilypond trunk. What do you think? Is anybody 
working on this now?

3) Hosting/mirroring
If you need anyone to pay for a mirrors/hosting for the Lilypond or Mutopia 
sites, maybe I could help.

Let me know what you think!

Dan Grover
Wonder Warp Software LLC

reply via email to

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