The Strasheela application consists of the Strasheela core and Strasheela extensions. The core defines style-independent basic functionality and should remain relatively small. You can find the sources for the core in the directory strasheela/source/
. The extensions (or contributions) on the other hand, extend this core by various functionality which can be style-specific. For example, the core defines only a single note pitch parameter which is highly generic but can not express, for example, enharmonic spelling. The extension HarmonisedScore (or HS), however, extends the music representation of the core by concepts such as pitch classes and scale degrees (scale degrees can also express enharmonic spelling). You can find the sources for extensions in the directory strasheela/contributions/
.
Whereas the core must be fully consistent, different Strasheela extension can possibly be inconsistent. That is, extensions can be defined relatively freely: different extensions do not necessarily work together. Nevertheless, extensions which can co-operate with other extensions are of course preferred ;-)
For writing a new Strasheela extension you do not need to touch existing code. Writing an extension can therefore be more easy then improving existing code. You can think of an extension as a Strasheela example which is relatively general and can simplify the definition of various examples.
However, in contrast to examples, an extension wraps the definition of procedures, functions, classes etc. in one ore more Oz functors. Moreover, in order to simplify its installation for everyone, an extension should provide a file makefile.oz
which tells ozmake how to compile and install the extension. A functor and a makefile.oz
are easily defined, as demonstrated in the tiny and well documented Strasheela extension template. In case of questions, please contact the Strasheela-devel mailing list — we happily help you in creating new Strasheela extensions ;-). Finally, an extension should provide some documentation and test cases. For example, you may simply add documentation strings for ozh
to your code (cf. how the Strasheela reference documentation is created) and add a file which demonstrates the usage of your extension. This is also demonstrated in the extension template. Please publish your extension source files on the Strasheela-devel mailing list (contained in a directory and compressed, for example, as zip or tgz).
Improving existing code includes fixing bugs and adding features to either the core or existing extensions. Please submit your changes as patches at the Strasheela-devel mailing list. If you add a feature, please add test cases to the respective test file. You usually find test cases for some Strasheela source file MyFile.oz
in a file MyFile-test.oz
located in a directory testing
next to MyFile.oz
. In case MyFile.oz
is stored in a directory source
, then the directory testing
is in the same directory as source
. Otherwise, the directory testing
is in the same directory as MyFile.oz
.