Development diary, part 13

Since the last diary instalment just before Christmas, another three months has very nearly sped past, and as winter finally gives way to spring here in London, we can reflect on the progress we have made over the dark and cold months now behind us, and look forward to the work that still lies ahead.

Travelling roadshow

In January, I travelled to Los Angeles for the NAMM Show, where I spent several days hiding behind a curtain at the back of the Yamaha/Steinberg Nuage demo room providing secret demonstrations of our application to selected partners and prominent musicians in attendance at the show.

Earlier in the week, I visited with my friend Doug LeBow, and held a few other private demonstrations, including to a group of prominent Hollywood arrangers and orchestrators at his home, before heading into Los Angeles to make presentations to the staff of JoAnn Kane Music Service at their office in Culver City, and to various teams from the Walt Disney Company, including Booker White's music office, in a beautiful private screening room in Walt Disney Studios in Burbank.

A whole wall of die-cast models from Disney/Pixar's Cars movies, at Walt Disney Studios.

Being able to gather feedback directly from the kinds of professionals that we are designing our product for is a real privilege, and I am very grateful to everybody that I met for sparing time out of their busy schedules to hear about our software. The music prep teams at JoAnn Kane and Disney literally had to rush off at the end of my sessions with them to continue cranking out parts for recording sessions scheduled for the following day. These visits impressed upon me once more the importance of building fast, efficient, and above all reliable software to support the work these men and women do under immense time pressure.

Fortunately, the feedback I was able to bring back to the team was pretty much universally positive. As I explained how our application is designed around a single window with multiple modes, that practically everything can be done using only the computer keyboard, and that the behaviour of the program can be deeply customised by way of options and properties – about which more later on – I saw a lot of nodding heads and (what I interpreted as) approving smiles. Our hope is that if we can build software that is good enough to stand up to the white heat of a Hollywood deadline, it will stand up to more or less anything else.

Building out Engrave mode

Now that Setup mode – where you add players and assign instruments to them, add new flows (which are independent pieces of music stored within the project), and combine them together into layouts – is largely implemented, and so too is Print mode (which was covered in the last instalment of this diary), over the past few months, we have started to focus our attention on Engrave mode.

The split between Write mode and Engrave mode is one of the most important contributors to your workflow in our application. I have taken to describing the division like this: in Write mode, you can change the content of your music; in Engrave mode, you can change the appearance of your music. Engrave mode will allow you not only to accomplish high-level page layout tasks, such as determining the relative positions of music, text, and even bitmap and vector graphics in a powerful way that is unique among scorewriters, but also to make fine graphical adjustments.

One aspect of this is how selections differ between Write mode and Engrave mode, which is illustrated in this little animation:

Starting in Write mode, you can see that clicking on any part of a chain of tied notes (even on the articulation) selects the entire chain: that's because, under the hood, that tied note is a single event, which provides all sorts of lovely conveniences, such as ensuring that nothing unwelcome happens when you change its pitch, add an articulation or an accidental – all of those operations apply to the whole event. Notice also that you can click on a stem to select all of the noteheads in the chord, which is very convenient.

Then we switch to Engrave mode, and you can see that now each individual graphical element can be selected independently. Because you can't change the musical content in Engrave mode – you can't, say, change the pitch or duration of a note, tied or otherwise – it's safe to allow selection of individual noteheads, ties, beams, rhythm dots, and so on. Once you have a single element selected, you can either change its properties (about which more in a moment), or you can edit it directly with the mouse or keyboard.

In Write mode, dragging an item like a note up and down will change its pitch; dragging a dynamic left or right will change its rhythmic position. In Engrave mode, by contrast, dragging an object will adjust its graphical position only. Some items show special handles representing individual parts of the item when they are selected, allowing you to manipulate them directly:

In the above animation you can see a few slightly unlikely graphical adjustments by way of a rather contrived example. First, the curvature of a slur is adjusted by dragging one of its Bézier control points. Next, the stem of the note on which the slur ends is extended: notice how the slur's right-hand end point is repositioned to maintain its distance relative to the stem tip. Next, the stems of the first group of beamed notes in the right-hand stave are lengthened, which has the effect of causing the dynamic between the staves to be repositioned, and consequently causing the stave below to be moved further away as well to avoid unwanted collisions between items. Finally, I drag the handle at the start of the second group of beamed notes to change the slope of the beam.

We still have quite a few things to add to Engrave mode: at the moment, there is no way of manually adjusting the horizontal music spacing, or indeed the vertical stave and system spacing, beyond the per-layout options, but this is a solid start on building out our vision for a specialised set of tools for quickly and safely making graphical adjustments to the score without risking accidental changes to the meaning of the music itself.

Hot properties

Another important area of work as we have begun to focus on Engrave mode has been developing the user interface for editing the properties of items in the score. Properties are one of the three layers of control that you will have over items in our application: the top, global layer is provided by options, which determine the default appearance and behaviour of each type of item; the bottom, local layer is provided by making direct graphical adjustments to items in Engrave mode, as I have already described; and properties occupy the middle ground, allowing you to adjust the appearance and behaviour of one or more items in the score in a semantic fashion. In general, we hope you will be able to achieve the results you need using a combination of options and properties, and will only relatively rarely need to make purely graphical edits to items.

Properties are shown in the bottom panel in both Write and Engrave modes, though each mode shows different properties; technically, Engrave mode offers a superset of the properties shown in Write mode, as properties that correspond to purely graphical data such as the precise location of, say, a slur's Bézier control points. The properties shown in the panel are contextual, and update according to the items selected in the score. Only those properties that are common to all of the selected items will appear in the panel: you can edit the properties of many selected dynamics all at the same time, but if you select a dynamic and a slur, then only the properties common to dynamics and slurs (which is not many!) will appear in the panel.

The properties available for a slur in Engrave mode

One of the neat things about the properties interface is that it's very easy to clear any property that is set, to return an item back to its default behaviour as specified in options. Aside from a handful of properties that are always set (which differ from item to item), properties are shown in the panel beside a little switch that denotes whether or not the property is set: if the switch is off, no property is set. If a property is set, simply click the switch to turn it off, which clears the property.

Dynamics, again

So far this instalment of the diary has been devoid of nerdy engraving detail, and since I know that's what you really come here for (at least, that's what I like to tell myself to justify writing about it), please indulge me as I return to one of the topics covered in the last entry. We've continued to work on dynamics, and I'd like to share a few more of the details with you.

Firstly, let's look at dashed hairpins. Here's how a dashed hairpin looks up close in Product A:

The hairpin is drawn using two angled dashed lines. Notice how the dashes are themselves rotated, and the point at which the two lines meet at the left-hand side looks a bit untidy. (Product B doesn't natively support dashed or dotted hairpins, though if you're creative you can achieve the effect using graphics, so kudos to the developers of Product A, whoever they were, for even making it possible without resorting to these kinds of advanced techniques.)

Here's how a dashed hairpin looks in our application:

The hairpin is drawn using paths rather than simple diagonal lines. Notice how the point at which the two diagonal lines meet is neat and tidy, and that the breaks in the line are vertical rather than angled. These are small details, of course, but they demonstrate that even the smallest details are not too unimportant for us to take care of. (We draw angled tuplet brackets in a similar way, so that the connection points between the vertical hooks and the angled line that spans the duration of the tuplet are absolutely precise, and don't show any ugly corners where the centres of a vertical line and an angled line intersect.)

One unique capability of our application is the way that it handles text-based gradual dynamic changes, which you see used instead of hairpins, especially in keyboard music, and particularly when the dynamic change is long and gradual enough that a hairpin looks odd (if a hairpin is very long, it takes a considerable proportion of its length for the lines to open up, so the start of a long crescendo or the end of a long diminuendo can look a lot like an extra, thick horizontal line). Although other applications allow you to create a dynamic line that begins with a text instruction, no other scoring application allows you to create a single dynamic that automatically splits the instruction into syllables across the length of the dynamic:

It's possible to achieve this kind of effect in other scoring programs, of course, by carefully positioning multiple text and line expressions next to each other, but our application makes it as simple as selecting an existing dynamic and changing one property.

We've also continued to work on the positioning of dynamics, and here's a little example that shows some of the intelligence that's built in to the application:

In the above animation, the crescendo hairpin is four quarters (crotchets) long, which means that it ends at the start of the first note of the following bar. Notice how the hairpin stops short of the barline, to avoid an unsightly appearance of two tiny protrusions poking through the barline, until a sufficiently wide time signature or key signature is created at that position, at which point the hairpin is drawn all the way to the textual dynamic instruction instead. Finally, notice how once the note at the start of the second bar is deleted, the text dynamic moves backwards to the left of the barline. Clever!

Upcoming appearances

That's it for this instalment. As always, dear reader, I'm very interested to hear what you think about what we're working on, so please leave your feedback, comments, and questions here, and I look forward to continuing our dialogue together.

If you're planning to attend the Musikmesse show in Frankfurt in a couple of weeks, I'll be there on Thursday afternoon (7 April) and all day Friday (8 April), as I'll be co-chairing the W3C Music Notation Community Group meeting, along with my colleagues Joe Berkovitz of Noteflight and Michael Good of MakeMusic. Drop by one of the hands-on stations for Steinberg's products in the Yamaha area (Portalhaus Ebene Z1) and ask for me: the staff there will know how to get hold of me if I'm not there, and if I'm free I would be delighted to meet you.

If you happen to be attending the London Book Fair the following week, I will be participating in a panel on accessibility on Wednesday 13 April, discussing how technology can assist visually impaired and blind musicians who can no longer read even large print sheet music and have not learned (or cannot learn) to read braille music in continuing to learn new music.

A few weeks after that, I will be giving a couple of presentations at the Major Orchestra Librarians' Association's annual conference in Helsinki, Finland, including a panel with my old friend Philip Rothman of NYC Music Services discussing the history of music notation technology, and a demonstration of the current state of our application, explaining how it can be used to speed up the score preparation process, so look out for another update around the middle of May. Until then!