This blog post is written by Neil Radisch, a freelance composer, arranger, orchestrator, and software developer. In addition to working for thirty years in the software industry, he has worked with the Philip Glass ensemble and wrote a musical that ran Off-Broadway. He is also the musical supervisor for the Mask and Wig Club of the University of Pennsylvania. Read on to learn more about the new web-based plug-in editor that Neil has created for Sibelius plug-ins.
When I switched to Sibelius a few years ago, I was extremely excited by its plug-ins feature, not just for the many plug-ins available for download, but also for the possibility of writing my own to accommodate my personal work style. When I finally attempted my own plug-in, I was dismayed at the programming environment that Sibelius offered. Perhaps I am a bit spoiled, but as a software engineer for thirty years, I have spent my time working in sophisticated development environments like Visual Studio and Xcode. Developing in a featureless generic text box was unimaginable.
Writing my own IDE (integrated development environment) from scratch would have been a monumental task, but it seemed that the availability of sophisticated web-based components could be the basis of at least a decent code editor for Sibelius plug-ins. Thanks in particular to the Ace editor, I was able to build a web-based plug-in editor with a decent feature set in a brief period of time.
The editor can be found at http://www.neilradisch.com/se. It provides editing environments for the three assets involved in plug-in development, methods, dialogs and variables. Despite being a web application, it is designed to function, as much as possible, like a standalone desktop application.
In the screenshot below, I have opened the Divide Durations plug-in which is included with Sibelius 7. Upon opening a plug-in you are presented with the method view. All the plug-in’s methods are listed and the code is folded.
Clicking on the methods name in either the method view or the method panel on the right hand side of the screen will unfold and open the code for that method. Methods can be added, deleted and reordered using the method panel on the right-hand side.
The code editor provides most of the features available in the Ace editor package, including syntax highlighting, search and replace, macros, and various layout customizations. Some of these features are available in the Edit menu. Others are available via keyboard shortcuts that can be displayed by clicking on the Shortcuts menu.
Clicking on the dialog panel changes the left hand side of the screen to the dialog view. When the dialog entries are unfolded, you will get an editor similar to the dialog editor that is built into Sibelius. Dialog gadgets can be dragged from the toolbar to the dialog, moved about, re-sized, and double-clicked to set properties. In addition, there are various alignment tools that are available in the Align menu.
The variable view can be invoked by clicking on the right-hand Variables panel:
The ability to load and save files from your local drive is one of the more technically interesting aspects of the software. Web browsers traditionally put severe restrictions on local data access for security reasons. Now that more and more applications are being deployed on the web, these restrictions are being eased. The methods used in the plug-in editor are at the cutting edge of what can be done in a browser. Because of that, the load and save behavior can be a bit unexpected. Loading and saving files will appear to be a file upload or download. But rest assured that no data is being transferred over the internet. It’s all local, despite appearances.
The only exception is the Safari browser. Safari does not yet support the mechanisms needed to save data to the local disk. In the Safari case only, the plug-in data is bounced off my server to facilitate the save to the local disk. I continue to monitor the various development forums, and hope to remove this special case as soon as Safari properly supports the necessary APIs.