Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.


Moritz was named after Max's terrible twin in Wilhelm Busch's Max and Moritz.
Max is a computer program that specializes in controlling information (sounds) at the MIDI event level and below. Moritz deals with the MIDI event level and above (musical form). MIDI events are the common interface (at the chord symbol level) between these levels of information.
Moritz is a Visual Studio (Community 2015 edition) solution, written in C#, containing two related Windows desktop programs that I use for creating scores that can be read and performed on the web:

A Krystal is an Abstract Data Type that I use for organizing large scale data structures. The Krystals 4.0 program, which is used to create krystals, has not changed since the last version of Moritz, but the type is used by the Assistant Composer, so needs to be kept here.
The Assistant Composer generates scores, written in SVG, that contain embedded MIDI information (see SVG-MIDI file format). Such scores are designed to be playable by my Assistant Performer software [1].
The Assistant Composer underwent a major update/overhaul in the autumn of 2014, and the code should now be much easier to understand. (My coding style is a bit pedestrian by present day C# standards, but maybe that's not such a bad thing.)
The biggest change, apart from cleaning up the code, is that scores can now contain both input and output chords. This enables much greater control over what happens when midi input information arrives during a live performance: Parallel processing can be used to enable a non-blocking, "advanced prepared piano" scenario. Single key presses can trigger either simple events or complex sequences of events, depending on how the links inside the score are organized.

Anyone is welcome to dive into and use any of my code in any way they like, but it would probably be better to contact me if you want to do that. Moritz is rather large, and the code is by nature rather complicated. There are, however, some parts of it that could easily be isolated and used for more general purposes. For example, the code for writing chord symbols (using the CLicht music font's metrics) could be used in any standard music notation program. Or, the SVG-MIDI file format and the code for spacing standard chord symbols across systems could easily be adapted for automatically notating Standard MIDI files...

February 2016
James Ingram

[1] The Assistant Performer used to be part of Moritz, but it is now a separate, open-source web application, written in Javascript. Links: About the Assistant Performer, on the web, on GitHub.


Contains two related Windows desktop programs, written in C#, that I use for creating scores.







No releases published


No packages published