34

The other decision question is going reasonably well, so here goes the next.

There's been some talk in the past about a music markup language. This question is to see if we can decide to request Lilypond support to be implemented.

(I do realize that us being in Beta might put such a request way back on their list, but on the flipside I think it might be good to show that we're alive.)

7
  • 1
    I support this 100%, But how do we ask a SE developer to implement that? Don't we need a mod to do that for us or something? Sep 13, 2014 at 12:54
  • 2
    I'm down for this as well. But how are we supposed to show support for the proposition? Providing an answer to this question? Commenting? Voting it up? Sep 14, 2014 at 19:41
  • 1
    @PatMuchmore: Support is shown by voting on the existing answer. How it is done practically we'll see when we've come to an conclusion. Which seems quite close. Sep 15, 2014 at 6:48
  • 3
    Find a renderer implemented in JavaScript and this is probably feasible. Failing that, a stable web service we could self-host might be an option.
    – Shog9
    Sep 16, 2014 at 16:08
  • 1
    @Shog9 Seems that there is no JS renderer for Lilypond specifically, but we can still use ABC notation instead of Lilypond (they are very similar). This is an ABC notation renderer written in JS: github.com/paulrosen/abcjs Could it be implemented here?
    – NPN328
    Sep 21, 2014 at 7:42
  • 1
    @Shog9: What about the Wikipedia solution? Not applicable here? Sep 21, 2014 at 11:55
  • 1
    AFAICT, the wikipedia solution (described further here: mediawiki.org/wiki/Extension:Score) would require a server with a working Lilypond installation (and probably ImageMagick). It creates and embeds a png of the score. I don't know if that would work for SE or not. Sep 23, 2014 at 2:08

5 Answers 5

26

Yes, we should propose that Lilypond is implemented. It is widespread, open and free.

6
  • 1
    The community coordinator of Stack Exchange Shog9 commented that we need to find a renderer implemented in JavaScript or failing that a stable web service that they could self-host.
    – NPN328
    Sep 17, 2014 at 22:48
  • I am not familiar with lilypond, but maybe this SO answer has what he is looking for? stackoverflow.com/a/15861969/1690799
    – NPN328
    Sep 17, 2014 at 23:05
  • 3
    Alternatively, here seems to be an open source javascript renderer for ABC notation: drawthedots.com/abcjs Sep 19, 2014 at 1:54
  • 1
    @CalebHines I'm not familiar with either ABC notation or Lilypond. Are they close enough? Seems that we can't find a web service or javascript renderer for Lilypond: is this ABC notation renderer a good alternative?
    – NPN328
    Sep 21, 2014 at 7:36
  • 1
    I'm probably not the right one to ask, as I don't know Lilypond at all, and have only used ABC a handful of times. I have no doubt that Lilypond is much more fully featured, but ABC should be more than sufficient for sketching out an example melody, or a series of chords, and is relatively easy to use. Here's the spec, if you want to see what its capable of: abc.sourceforge.net/standard/abc2-draft.html, and though it was initially developed for folk tunes, here's a Beethoven Symphony movement entered in ABC: ucolick.org/~sla/abcmusic/sym7mov2.html Sep 21, 2014 at 19:19
  • 1
    So short answer: I think it would probably be "good enough", and certainly better than nothing. Sep 21, 2014 at 19:21
8

On the surface it is a great idea that would be helpful and probably widely used on the site, but I can imagine the conversation with SE going a little like this:

Us: Hey SE devs, can we have Lily support?

SE Devs: ...What's Lily? How?

...What we need is either a very strong case for implementing Lilypond capabilities into this site (which we sorta do, but are making do without it), or some kind of follow-up information, or both. I propose we ask the SE developers directly whether they can:

  • Use the existing MediaWiki extension, which is apparently written in php (and GNU Public License!)
  • Or modify said extension so it can be used on the site
  • Or, if that isn't possible, can we please have something like this?

It would be great to have LilyPond support. There's even playback capability built in to the MediaWiki Extension! They did it...why can't we?

3
7

A Javascript interpretation of Lilypond would be extremely hard: A lilypond score file is not really a notation file at all, but source code in the Scheme programming language that already has quite a lot of handy macros implemented. There has been almost no work done in parsing anything but the simplest Lilypond notational files in any language but Scheme (the Abjad Python toolkit comes the closest, but mainly renders into Lilypond; not vice-versa). My sense is that someone would need to write a Scheme interpreter in Javascript before porting Lilypond would be possible. (Though the rendering is beautiful)

An implementation of VexFlow would be easier to adapt. I've ported a good chunk of the music21 python library in javascript as music21j -- it uses VexFlow for score rendering and MIDI.js for sound; just need to port the python versions of the ABC and MusicXML parsers to give two common formats for use.

See this blog post for an example (using a tiny notation format, but could be expanded to use ABC instead) of how to render in the browser from <div class="music21 tinyNotation"> tags just by adding a single script tag to the head:

<script data-main='http://web.mit.edu/music21/music21j/src/music21' src='http://web.mit.edu/music21/music21j/ext/require/require.js' warnBanner='no'></script>
3
  • 1
    btw -- while we're requesting things from the developers, definitely request adding BravuraText's .woff file to the stylesheet (see SMuFL.org) -- it would make nearly every musical symbol available to us for use in discussions so long as there was a tag to use it. Oct 19, 2014 at 17:45
  • Lo-and-behold, someone has written a scheme interpreter in Javascript: biwascheme.org. I don't know how full-featured it is, but there is one. I still think there are better solutions to trying to port lilypond though. Oct 25, 2014 at 17:57
  • music21j now supports parsing MusicXML client-side so if anyone wanted to use MusicXML on the site, music21j could be loaded and parse encoded files on the browser. It's a pretty big dependency though. Nov 19, 2018 at 13:44
2

So, I asked on Meta Stack Exchange how we would propose an idea to the team: How can a site ask for technical feature requests to be worked on, once the request has gained support?

Unfortunately, it's fair to say it was a dud. It's the responsibility of the SE "team" to skim through all the feature requests on all of the meta sites. The people whose responsibility to do this have either not been paying heed to this particular request, don't have the resources to work on it, don't consider it technically possible, or otherwise don't see a good reason for giving any response to the request.

It seems like we can consider the feature request considered...

EDIT: It seems we need to "get [our] moderators to raise it with the community team". On chat I will be doing that.

3
  • 2
    Richard - I already did that, and Shog has responded (you'll see his comment on the original question post)
    – Doktor Mayhem Mod
    Sep 18, 2014 at 16:06
  • What question?...
    – Richard
    Sep 21, 2014 at 16:53
  • 1
    Look up there Richard ^
    – Doktor Mayhem Mod
    Sep 21, 2014 at 16:55
2

I would suggest ABC Notation support instead of Lilypond because there is already an open-source ABCNotation to Javascript renderer available, abcjs, which would lower the effort that SE techs would have to make to add musical markup to our site.

I've added a question to that effect on the meta. The comments about current limitations of implementations is fairly lively.

1
  • I was just thinking "Lilypad is complicated...why not use ABC?" I would argue that the ABC syntax is much more suited to Q&A format since it's so lightweight, and would fit well with the markdown. We could use <abc> tags </abc>
    – Josiah
    May 15, 2015 at 14:51

Not the answer you're looking for? Browse other questions tagged .