Skip to main content

Simkin Scripting Language

Simkin in Sibelius

Sibelius is a leading music notation program available on Windows and Macintosh.

Simkin was used to provide the "ManuScript" plug-in facility.

This enables users to write scripts for extending Sibelius' functionality. Scripts have been written to perform complex musical analysis, music anotation and formatting.

The Simkin language syntax was customized for Sibelius. An additional for statement was added to make special iterations easier. This allows ManuScript'ers to write code like this:

for each Note n in bar
;// do something

Click here to see the Simkin source code for a plug-in.

To help scripters develop and organize their plug-ins, Sibelius developed a simple plug-in development environment including a dialog layout editor. The dialog editor was constructed from the Dialog Editor Window Controls also written by Simkin's author Simon Whiteside.

The following images show this environment in action:

In this picture the scripter has chosen a plug-in from the list of plug-ins installed, or created a new one.

This dialog shows the scripter the components of a plug-in:

  • methods
  • dialog layouts
  • member variables

Dialog layouts are actually a special kind of member variable which are underpreted by the underlying C++ code when the script requests that a dialog is shown.

Each Sibelius plug-in is stored in a single script file, but the scripter is never concerned with this file, as its contents are presented in an easier format by this dialog.

The subsequent screen shots are of the editors that are used for each component.

This dialog helps the scripter to edit a particular method in the plug-in.

The "Check Syntax" button parses the method and reports any errors it finds.

This picture shows the dialog editor being used to design a layout for a dialog that a plug-in will show to the user.

The scripter chooses a control from the floating palette on the right and drops it onto the layout.

Each control pops-up a properties dialog that sets its various properties, including which Simkin method to call if it is clicked.