The new parser uses a recursive-descent algorithm, and fully supports the original grammar. Adding new syntactic elements to the language is now simple, as is adding support for more complex grammars.
Some new features I added to the language are support for slides, hammer-ons, pull-offs, and tapping. Here's a blues lick written in VexTab:
|Blues Lick in VexTab|
Some readers have asked me about durations and how to specify rhythms in VexTab. Although the VexFlow core has full support for durations and timing, I still need a good way to represent them in the language. I'm open to ideas here if you have any.
I also spent this weekend working on the release of the first VexFlow-based product: TabDiv. TabDiv lets you easily embed guitar tablature into your website or blog.
After you've included the TabDiv
.cssfiles in your HTML document (or blog template), you can add tabs by simply creating DIV elements and setting the class to vex-tabdiv.
You can get TabDiv here: http://vexflow.com/tabdiv/index.html.
Why not Open-Source?
I'm no stranger to open-source. I've been writing, maintaining, and contributing to open-source software for over a decade.
Although I hope to eventually open-source all the VexFlow source code, I'm going to hold off on it until I figure out where I want to take this product. I've invested a lot of time and effort into making VexFlow a fast high-quality renderer, and I'd like to find a way to cater to both a commercial-audience, and the open-source community.
So, how does one find and maintain this delicate balance? Do I completely open-source it? Should I keep it closed and charge for it? Dual-license maybe?