VexABC - ABC notation parser for VexFlow

262 views
Skip to first unread message

Mikael Nousiainen

unread,
Dec 22, 2012, 5:31:09 PM12/22/12
to vex...@googlegroups.com
I've been working on an ABC notation parser for VexFlow. While I got many of the basic features working, I never got it working very reliably -- mostly because a good set of automated tests was missing. To get the work I'd done so far published, I finally implemented an initial test suite that contains (some kind of) tests for almost all of the features implemented in the parser. (Yes, some tests are still missing and the tests could and should be improved!).

The parser source code is available here:
https://github.com/incompleteopus/vexabc.git

Check out the interactive editor: (I admit it's almost too simple right now :D)
http://test.incompleteopus.net/vexabc/test/editor.html

The test suite is available here:
http://test.incompleteopus.net/vexabc/test/test.html

I'm really looking forward to improving the parser (and VexFlow at the same time) so that we could eventually reach the full ABC music standard 2.1 and make VexABC together with VexFlow the solution to rendering sheet music on web browsers and yet having an easy-to-read and easy-to-edit textual representation of the music.

Mohit Muthanna

unread,
Dec 22, 2012, 9:30:49 PM12/22/12
to vex...@googlegroups.com
Mikael,

Wow! Looks great. Looking at the tests, I see you've implemented a lot of features already.

I didn't get to see the code because Github is down for maintenance. Feel free to open issues in the VexFlow repo if you come across weird or missing behavior -- I'm happy to help out.

Mohit.




--
You received this message because you are subscribed to the Google
Groups "vexflow" group.
To post to this group, send email to vex...@googlegroups.com
To unsubscribe from this group, send email to
vexflow+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/vexflow?hl=en



--
Mohit Muthanna [mohit (at) muthanna (uhuh) com]

Dan Ringwalt

unread,
Dec 24, 2012, 4:42:41 PM12/24/12
to vex...@googlegroups.com
Great! I'm still working on MusicXML support, but I'd like to be able to support ABC too. If I get further with the intermediate representation and start to look at editing, it would be really nice to have ABC as a user-editable representation. If I get to that point, I'd really like to integrate ABC so that it could be used for user editing.

Mikael Nousiainen

unread,
Dec 24, 2012, 5:47:18 PM12/24/12
to vex...@googlegroups.com
Mohit:

Thanks! There are some features that are still missing in VexFlow and some that have been implemented in a very restrictive way (you can check out a list of these features in README.md of VexABC GIT repo). I'll probably anyway start creating tickets for VexFlow with some initial comments about implementing them.

Dan:

Sounds great. If (and when) the IR is at a usable state, the next logical step for ABC support is to convert the rendering logic to use the IR instead of directly using the VexFlow API.

Do you have any documentation describing the IR (other than the code)? It would be really useful to have a short document for the concepts, constructs and ideas for future extensions so that other people (let's say me :)) could participate developing it.

-Mikael

Dan Ringwalt

unread,
Dec 25, 2012, 2:08:23 PM12/25/12
to vex...@googlegroups.com
For now, there's no real documentation for the IR. If you look at the constructor functions in measure.js, the features that are there are pretty self-explanatory (since there's a constructor for most objects in the IR.) For now, I'm trying to get the complete formatting code together in document.js, then clean up measure.js so it just deals with the IR objects. The IR is pretty bare-bones, so afterwards I'd like to document it, then really focus on adding more features so that it's usable.
Reply all
Reply to author
Forward
0 new messages