[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:
http://etudeapp.com
It's currently the #4th top selling music app in the app store, and it's gotten
some decent press this week:
http://www.wired.com/gadgetlab/2010/03/etude-iphone-app/
http://www.tuaw.com/2010/03/17/count-the-beats-learn-to-read-and-play-sheet-music-with-etude-o/
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
www.wonderwarp.com
- iPhone app using Lilypond + potential contributions,
Daniel Grover <=