Monthly Archives: September 2014

A music notation workflow: NotateMe to Notion to Sibelius

When I’m not wrestling WordPress and Drupal to do my bidding, I sometimes hunker down in my home studio to record music.

Cakewalk SONAR is the bedrock for this computer-based studio, with a lot of assistance from Native Instruments KONTAKT and Propellerhead Reason. I’ve recorded four albums and numerous EPs with this set-up. The Achilles heel, however, has been notation.

I’m most comfortable when I can perform with a score, but so far, my “scores” have consisted of printed-out lyrics with chord markings scribbled between lines.

At the moment, the music notation space is dominated by two packages: Finale and Sibelius. The top-of-the-line products of both companies are akin to Adobe products in the publishing space. Both applications can produce amazing results but have steep learning curves. They’re packed with features that command a large initial investment.

And for the kind of music I record, they’re probably overkill.

I bought a copy of Finale back in 2006 as part of a going-out-of-business sale at an instrument store. I spent a month and a half getting acclimated to it, and I decided it was the most antagonistic user interface I’ve ever encountered. Every action was placed in a hierarchical silo that required endless scrolling through menus.

The user interface looked state-of-the-art for 1992, and the documentation was as byzantine as the software itself.

I’ve downloaded Finale demos in the subsequent years to see if anything has changed, and the answer is a resounding no. It’s telling the website has no screenshots.

So I switched to Sibelius and found the user interface far more intuitive and the feature set comparable. I thought I found my notation software of choice … until I would leave it untouched for months at a time.

Sibelius has some mighty powerful features intended to produce terrific-looking scores. But if you’re just looking to make turn a MIDI dump of a demo into a staff and chords, it might be more than you need.

A few weeks back, I browsed the Google Play store for a notation app I could use on my Android phone. I tried out NotateMe and was impressed enough by it to pay $40 for a full version. The handwriting recognition can get unwieldy at times, and you can’t exactly create the most robust scores with it. But if you just want to jot down a melody and chord progression, the convenience factor can’t be over-emphasized.

NotateMe can export to MIDI and MusicXML — straight to DropBox, even — which means another piece of software can pick up where NotateMe leaves off.

But which piece of software?

Hardware maker Presonus acquired a newcomer to the notation space called Notion. Rather than take on Sibelius and Finale, Notion offers speed and ease-of-use over a broad feature set.

Both Sibelius and Finale offer mid-priced versions of their products geared for musicians who don’t create orchestral scores, but these versions just remove features. They don’t change the workflow.

Notion actually feels like it was designed to get ideas down on notation quickly while still producing a great-looking score. Entering guitar tablature is a breeze, and the documentation is so clearly written that you’ll be working fast after an hour.

I did encounter a number of bugs, particularly where entering lyrics are concerned. The MIDI Export is absolutely borked when it comes to repeats.

Notion can also export to MusicXML, which can then be imported to Sibelius.

I still found myself reluctant to fire up Sibelius 6, and I traced my hesitation to the menu-driven interface. It’s really tough remembering where everything was. So I downloaded the demo for Sibelius 7.5 and tried out perhaps the most controversial change to the UI: the ribbon.

Some users dislike the ribbon. I’m not one of them.

I didn’t find the ribbon jarring when Microsoft introduced it in Office. I actually find it pretty convenient. But for Sibelius 7.x, the ribbon is a godsend.

The menus were getting just way too convoluted, and it was just too exhausting trying to internalize the layout. Oftentimes, I would think a particular function would be one place, when it turned out to be in another. My perception of how something worked obviously didn’t mesh with the UI designers of version 6.

But the moment I worked with the ribbon in Sibelius 7.5, I bought an upgrade immediately.

I anticipate doing more work in Sibelius now but not without doing some initial setup in Notion. It’s too bad that I need two or three pieces of software to accomplish notation, but the audience for notation is small and highly diverse. Notion has the potential to grow into a very under-served space and become the silver-bullet package for a mid-level audience.

Using Bootstrap with WordPress comments and pagination

One of the goals of refactoring my sites was moving from Blueprint CSS to Bootstrap. Blueprint CSS is no longer maintained, and Bootstrap supports responsive layouts. I wanted to make sure my sites were readable on mobile devices.

I would have preferred to use semantic class names in my markup, but since Bootstrap is new to me, I opted to follow example code as much as possible. In the future, I may get adventurous with using Bootstrap’s LESS source, but that day is not today.

Things were going great till I started using Bootstrap in my WordPress themes.

That’s when I ran into problems with the comment form.

I wanted to use a horizontal form, and that requires adding a Bootstrap class to the <form> tag. Unfortunately, WordPress doesn’t allow additional classes to be added to the function that renders a comment form.

Similarly, the function to paginate links doesn’t allow customized classes on the <ul> tag.

In a rush to get something out and working, I committed a grave sin — I hacked Core.

I added a few arguments to each of those functions to allow customized classes where I needed them, knowing full well those hacks would be blown away the next time I updated core. And that’s exactly what happened when I upgraded to WordPress 4.0.

I know what the correct solution is: replicate what Bootstrap does in style.css. If I were ambitious, I could create LESS aliases on the Bootstrap rules using WordPress class names. I’m not ambitious. Instead, I attempted to reverse engineer what Bootstrap was doing with its form-horizontal class and didn’t get far when I realized the time sink it would require.

So I opted for the less-wrong, still-lazy option — override those Core functions with a plugin.

Essentially, I copied the entirety of comment_form and paginate_links, renamed the functions with a bootstrap_* prefix so as not to collide with Core, then called those functions from my themes. The code for this plugin is available on Bitbucket.

bootstrap_comment_form adds four additional arguments to allow customization of the opening <form> tag and the submit button. bootstrap_paginate_links adds one argument to customize the pagination output when rendered as a list.

This solution opens up something of a maintenance nightmare.

If the original functions in Core change, they won’t be reflected in the overrides. Unfortunately, comment_form and paginate_links render their outputs instead of caching them in strings. So my override functions can’t call their parents and manipulate their results. I would need to copy any changes to the parent functions manually.

Or I could avoid this nightmare and submit this change to WordPress.