A Sibelius plug-in road tour

News

Philip Rothman’s post this summer about a trip to London to visit people he has worked with led me to consider how people I have worked with have influenced the plug-ins that I have written. I have a number of “Sibelius friends”, most of whom I have never met in person. Many of them were people I met through answering questions on the tech forum, or fellow Sibelius beta testers.

So here is a little travelogue through a set of plug-ins from June through November of 2018.

Most of the times I will write plug-ins because I need them in my work, or, in the course of answering questions, I might decide that it would be easier and better to write a plug-in to solve a problem rather than having to make up an intricate workaround. This is more likely to happen if a plug-in solution would be useful to a lot of users and would be easy to implement.

Sometimes I just look around for a problem a plug-in could solve. I decided to try to do something about ties into second endings, which have long been hard to notate in Sibelius. I considered doing something like what I had done in LV Fake, where I had replaced a note with a triplet where 2/3 of the value was tied to the last 1/3 (based on a suggestion by Jay Vilnai) to fake a “let ring” tie that positioned itself well, handled playback, and looked right.

For ties into second endings I needed it to work the other way, where the hidden note was the first note, but when I tried it I found that hiding the first note hid the tie as well. After some experimentation, I found that using a notehead style that was headless, stemless, and silent for the first note created a note that appeared to have a tie coming into it from nowhere. The tie was stable and the note even played back correctly.

I was excited by this discovery, and realized it would work for slides as well as ties, and even though there was still a lot of work to do with the plug-in, I wrote up an explanation of the process in the Sibelius Tech forum.

Here are some examples I showed, and it all looked great!

Philip Rothman saw my post and he told me how he had used the same kind of hidden notehead for a problem he had extending ties over other notes without dragging the ties. We decided to write a Scoring Notes blog post about this describing how this could be used, and we wrote it but never published it because the process kept changing. I told Philip that I would look into automating his process someday.

I continued working on Ties Into Second Endings, and found some problems. One was that dotted notes did not hide the dot when using an invisible notehead. I figured out a functional, if weird, way of representing a dotted note as a special tuplet with hidden brackets, and wrote a blog post describing the process (The Mathematics of Dotted Notes) for Robert Puff’s Of Note blog. Robert will publish my particularly geeky topics from time to time!

I finished Ties Into Second Endings and published it, but then discovered that there were spacing issues that seemed insurmountable, so I removed the plug-in from the download page.

I then attempted to write a plug-in that took a different approach, using LV Tie symbols instead of ties, as I had done for the plug-in Add LV Symbols. Putting symbols to the left of a note rather than the right introduced a whole new set of problems, including the fact that Sibelius would not allocate space in the bar for the symbols.

Plug-ins cannot change the spacing in the bar, but I realized that they had access to a field in the Note Spacing Rules called Gap Before First Note in Bar, which was exactly what I needed. I wrote about this to some friends, then continued working on the plug-in. I found that things like symbol spacing for accidentals would make the plug-in unworkable, so I abandoned the project, and at this point I had two fairly elaborate dead plug-ins and a few new tools.

I got mail from the engraver Bill Holab, who had seen my note about Gap Before First Note in Bar. He was wondering if I knew any way to fix notes that had been tied across systems and whose ties going into the notes were too short.

I was able to help out some by modifying the plug-in Filter Notes Tied-To (Simple) so it had an option to filter tied-to notes only when they were at the start of a system, which picked up the notes he was interested in. I also extracted the code I had used for changing the gap before the first note in a bar to make the plug-in Set Space Before First Note In Bar. Now he could filter the notes that were tied-to and add a gap, then he could look through all the bars at the start of systems and see if they were properly changed.

Bill was working on very large scores, so proofreading the changes was still a lot of work. Earlier I had put some filtered-object browsing code into the Go To plug-in, but I didn’t think it worked well enough, so I ended up writing Browse Selected Objects and Save or Restore Selection, which let you save off the original selection, browse through some pages, exit the plug-in to make changes, and then restart the plug-in, restoring the original selection so you could continue where you had left off.

I spent a fair bit of the summer reworking Browse Selected Objects, and it ended up being a very useful tool.

Robin Walker was helping someone with a score that Reset Note Spacing was not working with, and he discovered that there were lyrics in the score that were not aligned with any notes. Robin was wondering if a plug-in could detect such objects. I wrote a plug-in that could detect and filter what he was calling Orphan Lyrics, and I had it optionally call Browse Selected Objects so you could examine the filtered objects.

I added the ability to filter other objects, like Chord Symbols, which should also be lined up to rhythmic positions, and the result was Filter Orphaned Objects. We discussed having the plug-in align the objects, but that turned out to be very prone to aligning to the wrong location, so we left it as a proofreading, rather than a repair, tool.

Since I had told Philip I would try automating his process of making stable extended ties, I figured I would give it a shot. It was harder than that thought it would be. In the process of working this out I generalized the process of “tupletting” dotted notes and also converting notes that could not be represented as single notes (like a half note tied to an eighth note) into single-note tuplets with hidden brackets, and worked out a few other things that I assumed would be impossible.

Sometimes explaining to someone why something is impossible makes you think of how to make it possible!

The first two bars in the example below show the problem and the result, and the other bars show a bit of the process done by the plug-in Ties Extended Stable.

I figured I was about done with plug-ins for a while, when James Humberstone, with whom I had worked on the Transformation plug-ins in Sibelius 6 when he worked at Sibelius, asked if there was a way to move the top or bottom notes of chords up or down an octave, as a way to make chord inversions. It did not seem too hard, so I came up with Invert Chords. There followed a fairly lengthy back as forth as we worked out what to do with multiple voices and notes across staves, and then it took me a while to document the plug-in. As with most “shipping” software, it is nearly as much work to test, document, and tidy up the plug-in as it is to write it in the first place.

Around the same time, Wim Hoogewerf was looking for a better way to finger guitar music. He was copying a fingering number to specific locations and then wanted a fast way to change the number of these text objects. I had mentioned using Add Fingering To Notes as a more general approach, but it had really been broken by changes to text handling in Sibelius 7, so it was harder to use that it had been when it was written.

I had been meaning to fix that, and I worked out a new interface for the plug-in Reinput Text, which was what Wim had been looking for. That seemed successful, so I rewrote the interface for Add Fingering To Notes in a similar manner to produce Add Fingering To Notes for Sibelius 7 and later. That was a direct replacement for Add Fingering To Notes, but after some questions from Michele Galvagno, and testing by Wim and Michele, I added several new features to it as well.

I have worked with engraver Jeremy Hughes on several projects. He occasionally answers questions­ on the tech forum, and when he does he often offers problem solutions that amaze me because they are nothing I would have come up with. I commented on one such solution and he wrote me back. We got into a discussion of a problem he had, where people were respelling accidentals in parts without understanding that the changes would not appear in the full score (since Sib version 8.3), and he had gotten scores where the note spelling in the full score and parts was unintentionally out of sync. We discussed a plug-in that could look at a full score and parts, and make the spelling in the score and parts be the same.

It seemed straightforward enough: look at the selected notes in the full score and then at the same notes in a part that includes the same staff. If they are different, change one or the other until they match. If all staves exist only in a single part it is straightforward, but as soon as you have an instrument that appears in multiple parts it becomes much more complicated.

We exchanged descriptions of what we thought should happen several times, each time getting more specific and elaborate until we reached a point where I thought I could program something. Then we sent the plug-in back and forth, testing and deciding what we liked and didn’t like until we reached a place where Jeremy could try using it for real. We started talking about this in July, and finally finished at the end of October, when I published Respell To Match Score And Parts. My favorite moment was when Jeremy told me he had assigned it a shortcut.

I still had a few loose ends hanging around, and it occurred to me that some of the techniques I had developed for Ties Extended Stable could fix the spacing problems I had in Ties Into Second Endings. I reworked that plug-in and ended up putting it back on the download page. I apologize in advance for what will happen when you try to unpack some of those 33:32 tuplets, but at least it works.

Finally, sometime in November, I heard from my oldest “Sibelius friend” Daniel Spreadbury. He was trying to produce some PDF files from some Sibelius scores by the late composer Derek Bourgeois. The shipping plug-in Export Folder of Scores to PDF was an obvious choice, but Derek’s files were stored in an elaborate system of subfolders, and the plug-in would place all its output into a single folder. Daniel wanted to have the PDF files in the same subfolder structure.

I made a modification of Export Folder of Scores to PDF that would create the same subfolder structure in the destination folder, and, with a few more modifications, Daniel was able to produce the PDF files. I then asked Joe Pearson at Sibelius for permission to put the modified plug-in on the download page, and so Export Folder of Scores to PDF With Subfolders is now available to anyone with Sibelius 7.1.3 or later.

I also updated the plug-in Convert Folder To Current Sibelius Version to retain the subfolder structure, and will probably update some other similar plug-ins when I have a chance.

So that is a bit of the view from the rear-view mirror of the PluginMobile, still heading on down the road…

Comments

  1. Michele Galvagno

    Thank you for this wonderful retrospective, Bob!

    And thank you for mentioning my name, it was an honor to help you with my pickiness :-)

  2. Andrei

    Behold the awesomeness of Sibelius plug-ins’ high priest! Much gratitude, Bob, for your terrific contributions!

  3. Steven M Schuster

    Thank you. You have made my life easier!

Leave a Comment

Your email address will not be published. Required fields are marked *